]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/crimson/net/SocketMessenger.h
import quincy beta 17.1.0
[ceph.git] / ceph / src / crimson / net / SocketMessenger.h
index 44c1d3c21375fd27087fcd5d1d417d2d518c1120..cc01f4de0768ac95c4e00ffe4f1774df0fda8fd2 100644 (file)
@@ -24,6 +24,7 @@
 
 #include "crimson/net/chained_dispatchers.h"
 #include "Messenger.h"
+#include "Socket.h"
 #include "SocketConnection.h"
 
 namespace crimson::net {
@@ -48,23 +49,25 @@ class SocketMessenger final : public Messenger {
   uint32_t global_seq = 0;
   bool started = false;
 
-  bind_ertr::future<> do_bind(const entity_addrvec_t& addr);
+  listen_ertr::future<> do_listen(const entity_addrvec_t& addr);
+  /// try to bind to the first unused port of given address
+  bind_ertr::future<> try_bind(const entity_addrvec_t& addr,
+                               uint32_t min_port, uint32_t max_port);
+
 
  public:
   SocketMessenger(const entity_name_t& myname,
                   const std::string& logic_name,
                   uint32_t nonce);
-  ~SocketMessenger() override { ceph_assert(!listener); }
+  ~SocketMessenger() override;
 
   seastar::future<> set_myaddrs(const entity_addrvec_t& addr) override;
 
+  bool set_addr_unknowns(const entity_addrvec_t &addr) override;
   // Messenger interfaces are assumed to be called from its own shard, but its
   // behavior should be symmetric when called from any shard.
   bind_ertr::future<> bind(const entity_addrvec_t& addr) override;
 
-  bind_ertr::future<> try_bind(const entity_addrvec_t& addr,
-                               uint32_t min_port, uint32_t max_port) override;
-
   seastar::future<> start(const dispatchers_t& dispatchers) override;
 
   ConnectionRef connect(const entity_addr_t& peer_addr,
@@ -85,7 +88,7 @@ class SocketMessenger final : public Messenger {
 
   seastar::future<> shutdown() override;
 
-  void print(ostream& out) const override {
+  void print(std::ostream& out) const override {
     out << get_myname()
         << "(" << logic_name
         << ") " << get_myaddr();