list<obj_watch_item_t> pg_watchers;
PG *pg = it->second;
- pg->lock();
- pg->get_watchers(pg_watchers);
- pg->unlock();
+ pg->get_watchers(&pg_watchers);
watchers.splice(watchers.end(), pg_watchers);
}
}
void handle_loaded(RecoveryCtx *rctx);
void handle_query_state(Formatter *f);
+ virtual void get_watchers(std::list<obj_watch_item_t> *ls) = 0;
+
virtual void do_request(
OpRequestRef& op,
ThreadPool::TPHandle &handle
virtual void on_flushed() = 0;
virtual void on_shutdown() = 0;
virtual void check_blacklisted_watchers() = 0;
- virtual void get_watchers(std::list<obj_watch_item_t>&) = 0;
friend ostream& operator<<(ostream& out, const PG& pg);
};
// -------------------------------------------------------
-void PrimaryLogPG::get_watchers(list<obj_watch_item_t> &pg_watchers)
+void PrimaryLogPG::get_watchers(list<obj_watch_item_t> *ls)
{
+ lock();
pair<hobject_t, ObjectContextRef> i;
while (object_contexts.get_next(i.first, &i)) {
ObjectContextRef obc(i.second);
- get_obc_watchers(obc, pg_watchers);
+ get_obc_watchers(obc, *ls);
}
+ unlock();
}
void PrimaryLogPG::get_obc_watchers(ObjectContextRef obc, list<obj_watch_item_t> &pg_watchers)
void populate_obc_watchers(ObjectContextRef obc);
void check_blacklisted_obc_watchers(ObjectContextRef obc);
void check_blacklisted_watchers() override;
- void get_watchers(list<obj_watch_item_t> &pg_watchers) override;
+ void get_watchers(list<obj_watch_item_t> *ls) override;
void get_obc_watchers(ObjectContextRef obc, list<obj_watch_item_t> &pg_watchers);
public:
void handle_watch_timeout(WatchRef watch);