nref(1) {
_my_name = w;
}
- virtual ~Messenger() {
- assert(nref.test() == 0);
- }
void get() {
nref.inc();
virtual entity_addr_t get_myaddr() = 0;
entity_inst_t get_myinst() { return entity_inst_t(get_myname(), get_myaddr()); }
- void set_myname(entity_name_t m) { _my_name = m; }
+ void set_myname(const entity_name_t m) { _my_name = m; }
void set_default_send_priority(int p) { default_send_priority = p; }
int get_default_send_priority() { return default_send_priority; }
// send message
virtual void prepare_dest(const entity_inst_t& inst) {}
- virtual int send_message(Message *m, entity_inst_t dest) = 0;
- virtual int forward_message(Message *m, entity_inst_t dest) = 0;
- virtual int lazy_send_message(Message *m, entity_inst_t dest) {
+ virtual int send_message(Message *m, const entity_inst_t& dest) = 0;
+ virtual int forward_message(Message *m, const entity_inst_t& dest) = 0;
+ virtual int lazy_send_message(Message *m, const entity_inst_t& dest) {
return send_message(m, dest);
}
- virtual int send_keepalive(entity_inst_t dest) = 0;
+ virtual int send_keepalive(const entity_inst_t& dest) = 0;
- virtual void mark_down(entity_addr_t a) {}
+ virtual void mark_down(const entity_addr_t& a) {}
+protected:
+ //destruction should be handled via destroy()
+ virtual ~Messenger() {
+ assert(nref.test() == 0);
+ }
};
lock.Unlock();
}
-int SimpleMessenger::send_message(Message *m, entity_inst_t dest)
+int SimpleMessenger::send_message(Message *m, const entity_inst_t& dest)
{
// set envelope
m->get_header().src = get_myinst();
return 0;
}
-int SimpleMessenger::forward_message(Message *m, entity_inst_t dest)
+int SimpleMessenger::forward_message(Message *m, const entity_inst_t& dest)
{
// set envelope
m->get_header().src = get_myinst();
-int SimpleMessenger::lazy_send_message(Message *m, entity_inst_t dest)
+int SimpleMessenger::lazy_send_message(Message *m, const entity_inst_t& dest)
{
// set envelope
m->get_header().src = get_myinst();
lock.Unlock();
}
-int SimpleMessenger::send_keepalive(entity_inst_t dest)
+int SimpleMessenger::send_keepalive(const entity_inst_t& dest)
{
const entity_addr_t dest_addr = dest.addr;
entity_addr_t dest_proc_addr = dest_addr;
int shutdown();
void suicide();
void prepare_dest(const entity_inst_t& inst);
- int send_message(Message *m, entity_inst_t dest);
- int forward_message(Message *m, entity_inst_t dest);
- int lazy_send_message(Message *m, entity_inst_t dest);
+ int send_message(Message *m, const entity_inst_t& dest);
+ int forward_message(Message *m, const entity_inst_t& dest);
+ int lazy_send_message(Message *m, const entity_inst_t& dest);
/***********************/
private:
bool register_entity(entity_name_t addr);
void submit_message(Message *m, const entity_inst_t& addr, bool lazy=false);
- int send_keepalive(entity_inst_t addr);
+ int send_keepalive(const entity_inst_t& addr);
void learned_addr(entity_addr_t peer_addr_for_me);