summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGreg Farnum <gregory.farnum@dreamhost.com>2012-04-03 13:13:20 -0700
committerGreg Farnum <gregory.farnum@dreamhost.com>2012-04-03 13:13:20 -0700
commit77f45667c0f9cba0da7b89213c7eba43652164f3 (patch)
tree60d94a6a716620e05fc28ccd608eea375c977c15
parent6374d0645e6cc8e898776b7c4ddf09b7c4f17ec6 (diff)
downloadceph-77f45667c0f9cba0da7b89213c7eba43652164f3.tar.gz
msgr: store the entity_inst_t in the Messenger.
Convert ms_addr and _my_name to be references to their fields in the entity_inst_t my_inst. This way we can use const references for accessing all of them, instead of the bizarre distinction we had before for get_myinst(). Signed-off-by: Greg Farnum <gregory.farnum@dreamhost.com>
-rw-r--r--src/msg/Messenger.h19
-rw-r--r--src/msg/SimpleMessenger.cc5
-rw-r--r--src/msg/SimpleMessenger.h10
3 files changed, 16 insertions, 18 deletions
diff --git a/src/msg/Messenger.h b/src/msg/Messenger.h
index 37baccb906a..0865f9c0d86 100644
--- a/src/msg/Messenger.h
+++ b/src/msg/Messenger.h
@@ -74,7 +74,8 @@ private:
protected:
/// the "name" of the local daemon. eg client.99
- entity_name_t _my_name;
+ entity_inst_t my_inst;
+ entity_name_t& _my_name;
int default_send_priority;
/// set to true once the Messenger has started, and set to false on shutdown
bool started;
@@ -82,7 +83,9 @@ protected:
public:
CephContext *cct;
Messenger(CephContext *cct_, entity_name_t w)
- : default_send_priority(CEPH_MSG_PRIO_DEFAULT), started(false),
+ : my_inst(),
+ _my_name(my_inst.name),
+ default_send_priority(CEPH_MSG_PRIO_DEFAULT), started(false),
cct(cct_)
{
_my_name = w;
@@ -93,10 +96,16 @@ protected:
}
// accessors
- entity_name_t get_myname() { return _my_name; }
- virtual const entity_addr_t& get_myaddr() = 0;
+ const entity_name_t& get_myname() { return _my_name; }
+ /**
+ * Retrieve the Messenger's address.
+ *
+ * @return A copy of the address this Messenger currently
+ * believes to be its own.
+ */
+ const entity_addr_t& get_myaddr() { return my_inst.addr; }
virtual void set_ip(entity_addr_t &addr) = 0;
- entity_inst_t get_myinst() { return entity_inst_t(get_myname(), get_myaddr()); }
+ const entity_inst_t& get_myinst() { return my_inst; }
/**
* Set the name of the local entity. The name is reported to others and
diff --git a/src/msg/SimpleMessenger.cc b/src/msg/SimpleMessenger.cc
index 0a642500719..0cefaa56073 100644
--- a/src/msg/SimpleMessenger.cc
+++ b/src/msg/SimpleMessenger.cc
@@ -487,11 +487,6 @@ int SimpleMessenger::lazy_send_message(Message *m, const entity_inst_t& dest)
return 0;
}
-const entity_addr_t& SimpleMessenger::get_myaddr()
-{
- return ms_addr;
-}
-
/**
* If ms_addr doesn't have an IP set, this function
* will fill it in from the passed addr. Otherwise it does nothing and returns.
diff --git a/src/msg/SimpleMessenger.h b/src/msg/SimpleMessenger.h
index 12a5a16f757..0ab9062e2d5 100644
--- a/src/msg/SimpleMessenger.h
+++ b/src/msg/SimpleMessenger.h
@@ -67,13 +67,6 @@ public:
*/
void set_ip(entity_addr_t& addr);
/**
- * Retrieve the Messenger's address.
- *
- * @return A copy of he address this Messenger currently
- * believes to be its own.
- */
- virtual const entity_addr_t& get_myaddr();
- /**
* Retrieve the Connection for an endpoint.
*
* @param dest The endpoint you want to get a Connection for.
@@ -475,7 +468,7 @@ private:
// where i listen
bool need_addr;
- entity_addr_t ms_addr;
+ entity_addr_t& ms_addr;
uint64_t nonce;
// local
@@ -577,6 +570,7 @@ public:
accepter(this),
lock("SimpleMessenger::lock"), did_bind(false),
dispatch_throttler(cct->_conf->ms_dispatch_throttle_bytes), need_addr(true),
+ ms_addr(my_inst.addr),
nonce(_nonce), destination_stopped(false), my_type(name.type()),
global_seq_lock("SimpleMessenger::global_seq_lock"), global_seq(0),
reaper_thread(this), reaper_started(false), reaper_stop(false),