#include "crimson/net/chained_dispatchers.h"
#include "Messenger.h"
+#include "Socket.h"
#include "SocketConnection.h"
namespace crimson::net {
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,
seastar::future<> shutdown() override;
- void print(ostream& out) const override {
+ void print(std::ostream& out) const override {
out << get_myname()
<< "(" << logic_name
<< ") " << get_myaddr();