From: Joao Eduardo Luis Date: Fri, 27 Feb 2015 15:58:06 +0000 (+0000) Subject: mon: MonOpRequest: add 'send_reply()' function X-Git-Tag: v9.1.0~535^2~40 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=53bd1ba5108b0507185c765f42712497b48b4ef5;p=ceph.git mon: MonOpRequest: add 'send_reply()' function Signed-off-by: Joao Eduardo Luis --- diff --git a/src/mon/Makefile.am b/src/mon/Makefile.am index ee6542d42d51..476acef77972 100644 --- a/src/mon/Makefile.am +++ b/src/mon/Makefile.am @@ -18,7 +18,8 @@ libmon_la_SOURCES = \ mon/Elector.cc \ mon/HealthMonitor.cc \ mon/DataHealthService.cc \ - mon/ConfigKeyService.cc + mon/ConfigKeyService.cc \ + mon/MonOpRequest.cc libmon_la_LIBADD = $(LIBAUTH) $(LIBCOMMON) $(LIBOS) $(LIBMON_TYPES) noinst_LTLIBRARIES += libmon.la diff --git a/src/mon/MonOpRequest.cc b/src/mon/MonOpRequest.cc new file mode 100644 index 000000000000..e61a471a7302 --- /dev/null +++ b/src/mon/MonOpRequest.cc @@ -0,0 +1,41 @@ +#include +#include "msg/Messenger.h" +#include "msg/Message.h" +#include "messages/MRoute.h" + +#include "mon/MonOpRequest.h" +#include "mon/Session.h" + +#define dout_subsys ceph_subsys_mon +#undef dout_prefix +#define dout_prefix _prefix(_dout, this) +static ostream& _prefix(std::ostream *_dout, const MonOpRequest *op) { + *_dout << "optracker foo "; + return *_dout; +} + +void MonOpRequest::send_reply(Message *reply) +{ + if (!session) { + dout(2) << "send_reply no session, dropping reply " << *reply + << " to " << request << " " << *request << dendl; + reply->put(); + return; + } + + if (!session->con && !session->proxy_con) { + dout(2) << "send_reply no connection, dropping reply " << *reply + << " to " << request << " " << *request << dendl; + reply->put(); + return; + } + + if (session->proxy_con) { + dout(15) << "send_reply routing reply to " << con->get_peer_addr() + << " via " << session->proxy_con->get_peer_addr() + << " for request " << *request << dendl; + session->proxy_con->send_message(new MRoute(session->proxy_tid, reply)); + } else { + session->con->send_message(reply); + } +} diff --git a/src/mon/MonOpRequest.h b/src/mon/MonOpRequest.h index 810158467bf4..3dece4f43c33 100644 --- a/src/mon/MonOpRequest.h +++ b/src/mon/MonOpRequest.h @@ -93,6 +93,8 @@ public: } typedef ceph::shared_ptr Ref; + + void send_reply(Message *reply); }; typedef MonOpRequest::Ref MonOpRequestRef;