salsa  0.4.15
MessageZyre.cc
1 #include "MessageZyre.hh"
2 
3 namespace Salsa {
4 MessageZyre::MessageZyre(zyre_event_t * pEvent) : Message(), mpEvent(pEvent)
5 {
10 }
12 {
16  zyre_event_destroy(&mpEvent);
17 }
18 
19 void MessageZyre::print() const
20 {
24 
25  zyre_event_print(mpEvent);
26 }
27 
29 {
33 
34  if (mpEvent) {
35  std::string eventType = zyre_event_type(mpEvent);
36  SPD_TRACE("MessageZyre::nodeEvent() : type [{}]", eventType);
37 
38  if (eventType == "ENTER") {
39  return Message::ENTER;
40  }
41  else if (eventType == "EXIT") {
42  return Message::EXIT;
43  }
44  else if (eventType == "EVASIVE") {
45  return Message::EVASIVE;
46  }
47  else if (eventType == "WHISPER") {
48  return Message::WHISPER;
49  }
50  }
51 
52  return Message::UNKNOWN;
53 }
54 
55 std::string MessageZyre::uuid() const
56 {
60  if (!mpEvent) {
61  return "no_uuid";
62  }
63 
64  return zyre_event_peer_uuid(mpEvent);
65 }
66 
67 std::string MessageZyre::name() const
68 {
72  if (!mpEvent) {
73  return "no_name";
74  }
75 
76  return zyre_event_peer_name(mpEvent);
77 }
78 
79 zyre_event_t * MessageZyre::zyreEvent() const
80 {
84  return mpEvent;
85 }
86 
87 std::vector<std::string> & MessageZyre::content()
88 {
92 
93  mContent.clear();
94  zmsg_t * pMsg = zyre_event_msg(mpEvent);
95  if (pMsg) {
96  char * m_str = zmsg_popstr(pMsg);
97  while (m_str) {
98  mContent.push_back(m_str);
99  free(m_str);
100  m_str = zmsg_popstr(pMsg);
101  }
102  }
103  return mContent;
104 }
105 
106 } // namespace Salsa
MessageZyre(zyre_event_t *pEvent=nullptr)
Definition: MessageZyre.cc:4
zyre_event_t * zyreEvent() const
Get zyre event from message.
Definition: MessageZyre.cc:79
virtual void print() const
Printing info.
Definition: MessageZyre.cc:19
virtual ~MessageZyre()
Definition: MessageZyre.cc:11
virtual std::vector< std::string > & content()
Retursn vector of partial messages as strings.
Definition: MessageZyre.cc:87
virtual EEventType event() const
Returns node event type.
Definition: MessageZyre.cc:28
virtual std::string uuid() const
Returns node uuid.
Definition: MessageZyre.cc:55
zyre_event_t * mpEvent
Zyre event.
Definition: MessageZyre.hh:33
virtual std::string name() const
Returns node uuid.
Definition: MessageZyre.cc:67
std::vector< std::string > mContent
Content.
Definition: MessageZyre.hh:34
Base Message class.
Definition: Message.hh:15
EEventType
Node event type.
Definition: Message.hh:18