daemon_state.cull("osd", names_exist);
}
-void Mgr::handle_log(MLog *m)
+void Mgr::handle_log(ref_t<MLog> m)
{
for (const auto &e : m->entries) {
py_module_registry->notify_all(e);
}
-
- m->put();
}
-void Mgr::handle_service_map(MServiceMap *m)
+void Mgr::handle_service_map(ref_t<MServiceMap> m)
{
dout(10) << "e" << m->service_map.epoch << dendl;
cluster_state.set_service_map(m->service_map);
daemon_state.cull("mon", names_exist);
}
-bool Mgr::ms_dispatch(Message *m)
+bool Mgr::ms_dispatch2(const ref_t<Message>& m)
{
dout(4) << *m << dendl;
std::lock_guard l(lock);
switch (m->get_type()) {
case MSG_MGR_DIGEST:
- handle_mgr_digest(static_cast<MMgrDigest*>(m));
+ handle_mgr_digest(ref_cast<MMgrDigest>(m));
break;
case CEPH_MSG_MON_MAP:
py_module_registry->notify_all("mon_map", "");
handle_mon_map();
- m->put();
break;
case CEPH_MSG_FS_MAP:
py_module_registry->notify_all("fs_map", "");
- handle_fs_map((MFSMap*)m);
+ handle_fs_map(ref_cast<MFSMap>(m));
return false; // I shall let this pass through for Client
break;
case CEPH_MSG_OSD_MAP:
// Continuous subscribe, so that we can generate notifications
// for our MgrPyModules
objecter->maybe_request_map();
- m->put();
break;
case MSG_SERVICE_MAP:
- handle_service_map(static_cast<MServiceMap*>(m));
+ handle_service_map(ref_cast<MServiceMap>(m));
py_module_registry->notify_all("service_map", "");
- m->put();
break;
case MSG_LOG:
- handle_log(static_cast<MLog *>(m));
+ handle_log(ref_cast<MLog>(m));
break;
default:
}
-void Mgr::handle_fs_map(MFSMap* m)
+void Mgr::handle_fs_map(ref_t<MFSMap> m)
{
ceph_assert(lock.is_locked_by_me());
return false;
}
-void Mgr::handle_mgr_digest(MMgrDigest* m)
+void Mgr::handle_mgr_digest(ref_t<MMgrDigest> m)
{
dout(10) << m->mon_status_json.length() << dendl;
dout(10) << m->health_json.length() << dendl;
- cluster_state.load_digest(m);
+ cluster_state.load_digest(m.get());
py_module_registry->notify_all("mon_status", "");
py_module_registry->notify_all("health", "");
// the pgmap might have changed since last time we were here.
py_module_registry->notify_all("pg_summary", "");
dout(10) << "done." << dendl;
-
- m->put();
+ m.reset();
if (!digest_received) {
digest_received = true;
return server.get_myaddrs();
}
- void handle_mgr_digest(MMgrDigest* m);
- void handle_fs_map(MFSMap* m);
+ void handle_mgr_digest(ceph::ref_t<MMgrDigest> m);
+ void handle_fs_map(ceph::ref_t<MFSMap> m);
void handle_osd_map();
- void handle_log(MLog *m);
- void handle_service_map(MServiceMap *m);
+ void handle_log(ceph::ref_t<MLog> m);
+ void handle_service_map(ceph::ref_t<MServiceMap> m);
void handle_mon_map();
bool got_mgr_map(const MgrMap& m);
- bool ms_dispatch(Message *m);
+ bool ms_dispatch2(const ceph::ref_t<Message>& m);
void background_init(Context *completion);
void shutdown();
}
}
-void MgrStandby::handle_mgr_map(MMgrMap* mmap)
+void MgrStandby::handle_mgr_map(ref_t<MMgrMap> mmap)
{
auto &map = mmap->get_map();
dout(4) << "received map epoch " << map.get_epoch() << dendl;
}
}
-bool MgrStandby::ms_dispatch(Message *m)
+bool MgrStandby::ms_dispatch2(const ref_t<Message>& m)
{
std::lock_guard l(lock);
dout(4) << state_str() << " " << *m << dendl;
if (m->get_type() == MSG_MGR_MAP) {
- handle_mgr_map(static_cast<MMgrMap*>(m));
+ handle_mgr_map(ref_cast<MMgrMap>(m));
}
bool handled = false;
if (active_mgr) {
auto am = active_mgr;
lock.Unlock();
- handled = am->ms_dispatch(m);
+ handled = am->ms_dispatch2(m);
lock.Lock();
}
if (m->get_type() == MSG_MGR_MAP) {
std::string state_str();
- void handle_mgr_map(MMgrMap *m);
+ void handle_mgr_map(ceph::ref_t<MMgrMap> m);
void _update_log_config();
void send_beacon();
MgrStandby(int argc, const char **argv);
~MgrStandby() override;
- bool ms_dispatch(Message *m) override;
+ bool ms_dispatch2(const ceph::ref_t<Message>& m) override;
bool ms_handle_reset(Connection *con) override { return false; }
void ms_handle_remote_reset(Connection *con) override {}
bool ms_get_authorizer(int dest_type, AuthAuthorizer **authorizer) override;