From: Sage Weil Date: Mon, 30 Jul 2018 20:52:04 +0000 (-0500) Subject: msg/Messenger: make connect_to() key method, get_connection() becomes wrapper X-Git-Tag: v14.0.1~649^2~8 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=8d31361a3d3c749330e8bee8bae55b07f1d3fab5;p=ceph.git msg/Messenger: make connect_to() key method, get_connection() becomes wrapper We'll phase out get_connection() wrappers. Signed-off-by: Sage Weil --- diff --git a/src/msg/Messenger.h b/src/msg/Messenger.h index b393fae3a11..931fca8b269 100644 --- a/src/msg/Messenger.h +++ b/src/msg/Messenger.h @@ -484,14 +484,14 @@ public: * * @param dest The entity to get a connection for. */ - virtual ConnectionRef get_connection(const entity_inst_t& dest) = 0; - - virtual ConnectionRef connect_to( - int type, const entity_addrvec_t& dest) { + virtual ConnectionRef get_connection(const entity_inst_t& dest) { // temporary - return get_connection(entity_inst_t(entity_name_t(type, -1), - dest.legacy_addr())); + return connect_to(dest.name.type(), + entity_addrvec_t(dest.addr)); } + + virtual ConnectionRef connect_to( + int type, const entity_addrvec_t& dest) = 0; ConnectionRef connect_to_mon(const entity_addrvec_t& dest) { return connect_to(CEPH_ENTITY_TYPE_MON, dest); } diff --git a/src/msg/async/AsyncMessenger.cc b/src/msg/async/AsyncMessenger.cc index 48922b9c489..3b908861917 100644 --- a/src/msg/async/AsyncMessenger.cc +++ b/src/msg/async/AsyncMessenger.cc @@ -581,20 +581,20 @@ AsyncConnectionRef AsyncMessenger::create_connect( return conn; } -ConnectionRef AsyncMessenger::get_connection(const entity_inst_t& dest) +ConnectionRef AsyncMessenger::connect_to(int type, const entity_addrvec_t& addrs) { Mutex::Locker l(lock); - if (my_addrs->legacy_addr() == dest.addr) { + if (*my_addrs == addrs) { // local return local_connection; } - AsyncConnectionRef conn = _lookup_conn(entity_addrvec_t(dest.addr)); + AsyncConnectionRef conn = _lookup_conn(addrs); if (conn) { - ldout(cct, 10) << __func__ << " " << dest << " existing " << conn << dendl; + ldout(cct, 10) << __func__ << " " << addrs << " existing " << conn << dendl; } else { - conn = create_connect(entity_addrvec_t(dest.addr), dest.name.type()); - ldout(cct, 10) << __func__ << " " << dest << " new " << conn << dendl; + conn = create_connect(addrs, type); + ldout(cct, 10) << __func__ << " " << addrs << " new " << conn << dendl; } return conn; diff --git a/src/msg/async/AsyncMessenger.h b/src/msg/async/AsyncMessenger.h index 2af8875bd2c..86a952ac126 100644 --- a/src/msg/async/AsyncMessenger.h +++ b/src/msg/async/AsyncMessenger.h @@ -149,7 +149,8 @@ public: * @defgroup Connection Management * @{ */ - ConnectionRef get_connection(const entity_inst_t& dest) override; + ConnectionRef connect_to(int type, + const entity_addrvec_t& addrs) override; ConnectionRef get_loopback_connection() override; void mark_down(const entity_addr_t& addr) override { mark_down_addrs(entity_addrvec_t(addr)); diff --git a/src/msg/simple/SimpleMessenger.cc b/src/msg/simple/SimpleMessenger.cc index 2d79a9e06df..5bd397c4d30 100644 --- a/src/msg/simple/SimpleMessenger.cc +++ b/src/msg/simple/SimpleMessenger.cc @@ -440,22 +440,23 @@ bool SimpleMessenger::verify_authorizer(Connection *con, int peer_type, challenge); } -ConnectionRef SimpleMessenger::get_connection(const entity_inst_t& dest) +ConnectionRef SimpleMessenger::connect_to(int type, + const entity_addrvec_t& addrs) { Mutex::Locker l(lock); - if (my_addr == dest.addr) { + if (my_addr == addrs.front()) { // local return local_connection; } // remote while (true) { - Pipe *pipe = _lookup_pipe(dest.addr); + Pipe *pipe = _lookup_pipe(addrs.front()); if (pipe) { - ldout(cct, 10) << "get_connection " << dest << " existing " << pipe << dendl; + ldout(cct, 10) << "get_connection " << addrs << " existing " << pipe << dendl; } else { - pipe = connect_rank(dest.addr, dest.name.type(), NULL, NULL); - ldout(cct, 10) << "get_connection " << dest << " new " << pipe << dendl; + pipe = connect_rank(addrs.front(), type, NULL, NULL); + ldout(cct, 10) << "get_connection " << addrs << " new " << pipe << dendl; } Mutex::Locker l(pipe->pipe_lock); if (pipe->connection_state) diff --git a/src/msg/simple/SimpleMessenger.h b/src/msg/simple/SimpleMessenger.h index 1a56bde09a2..3c5e850c91a 100644 --- a/src/msg/simple/SimpleMessenger.h +++ b/src/msg/simple/SimpleMessenger.h @@ -149,7 +149,7 @@ public: * @defgroup Connection Management * @{ */ - ConnectionRef get_connection(const entity_inst_t& dest) override; + ConnectionRef connect_to(int type, const entity_addrvec_t& addrs) override; ConnectionRef get_loopback_connection() override; int send_keepalive(Connection *con); void mark_down(const entity_addr_t& addr) override; diff --git a/src/msg/xio/XioMessenger.h b/src/msg/xio/XioMessenger.h index a0757081018..6f8a67baf21 100644 --- a/src/msg/xio/XioMessenger.h +++ b/src/msg/xio/XioMessenger.h @@ -134,6 +134,13 @@ public: virtual ConnectionRef get_connection(const entity_inst_t& dest); + // compat hack + ConnectionRef connect_to( + int type, const entity_addrvec_t& dest) override { + return get_connection(entity_inst_t(entity_name_t(type, -1), + dest.legacy_addr())); + } + virtual ConnectionRef get_loopback_connection(); void unregister_xcon(XioConnection *xcon);