#include "osd.h"
+#include "crimson/net/Connection.h"
#include "crimson/net/SocketMessenger.h"
namespace {
msgr->set_crc_header();
}
}
+ dispatchers.push_front(this);
+ dispatchers.push_front(&monc);
}
OSD::~OSD() = default;
seastar::future<> OSD::start()
{
logger().info("start");
- return seastar::now();
+ return client_msgr.start(&dispatchers).then([this] {
+ return monc.start();
+ }).then([this] {
+ monc.sub_want("mgrmap", 0, 0);
+ monc.sub_want("osdmap", 0, 0);
+ return monc.renew_subs();
+ });
}
seastar::future<> OSD::stop()
{
- return gate.close();
+ return gate.close().then([this] {
+ return monc.stop();
+ }).then([this] {
+ return client_msgr->shutdown();
+ });
+}
+
+seastar::future<> OSD::ms_dispatch(ceph::net::ConnectionRef conn, MessageRef m)
+{
+ logger().info("ms_dispatch {}", *m);
+ return seastar::now();
+}
+
+seastar::future<> OSD::ms_handle_connect(ceph::net::ConnectionRef conn)
+{
+ if (conn->get_peer_type() != CEPH_ENTITY_TYPE_MON) {
+ return seastar::now();
+ } else {
+ return seastar::now();
+ }
+}
+
+seastar::future<> OSD::ms_handle_reset(ceph::net::ConnectionRef conn)
+{
+ // TODO: cleanup the session attached to this connection
+ logger().warn("ms_handle_reset");
+ return seastar::now();
+}
+
+seastar::future<> OSD::ms_handle_remote_reset(ceph::net::ConnectionRef conn)
+{
+ logger().warn("ms_handle_remote_reset");
+ return seastar::now();
}
#include <seastar/core/future.hh>
#include <seastar/core/gate.hh>
+#include "crimson/mon/MonClient.h"
#include "crimson/net/Dispatcher.h"
+#include "crimson/osd/chained_dispatchers.h"
namespace ceph::net {
class Messenger;
std::unique_ptr<ceph::net::Messenger> cluster_msgr;
// talk with mon/mgr
std::unique_ptr<ceph::net::Messenger> client_msgr;
+ ChainedDispatchers dispatchers;
+ ceph::mon::Client monc;
+
+ // Dispatcher methods
+ seastar::future<> ms_dispatch(ceph::net::ConnectionRef conn, MessageRef m) override;
+ seastar::future<> ms_handle_connect(ceph::net::ConnectionRef conn) override;
+ seastar::future<> ms_handle_reset(ceph::net::ConnectionRef conn) override;
+ seastar::future<> ms_handle_remote_reset(ceph::net::ConnectionRef conn) override;
public:
OSD(int id, uint32_t nonce);