Backported fix for addresses on triggered events

This commit is contained in:
Lourens Naudé 2012-11-14 09:51:24 +00:00 committed by Pieter Hintjens
parent 07122eefec
commit c05a1b1f26

View File

@ -1063,98 +1063,108 @@ void zmq::socket_base_t::event_connected (const char *addr_, int fd_)
void zmq::socket_base_t::event_connect_delayed (const char *addr_, int err_) void zmq::socket_base_t::event_connect_delayed (const char *addr_, int err_)
{ {
zmq_event_t event; if (monitor_events & ZMQ_EVENT_CONNECT_DELAYED) {
if (!(monitor_events & ZMQ_EVENT_CONNECT_DELAYED)) return; zmq_event_t event;
event.event = ZMQ_EVENT_CONNECT_DELAYED; event.event = ZMQ_EVENT_CONNECT_DELAYED;
event.data.connected.addr = (char *)addr_; event.data.connect_delayed.addr = const_cast <char *> (addr_);
event.data.connect_delayed.err = err_; event.data.connect_delayed.err = err_;
monitor_event (event); monitor_event (event);
}
} }
void zmq::socket_base_t::event_connect_retried (const char *addr_, int interval_) void zmq::socket_base_t::event_connect_retried (const char *addr_, int interval_)
{ {
zmq_event_t event; if (monitor_events & ZMQ_EVENT_CONNECT_RETRIED) {
if (!(monitor_events & ZMQ_EVENT_CONNECT_RETRIED)) return; zmq_event_t event;
event.event = ZMQ_EVENT_CONNECT_RETRIED; event.event = ZMQ_EVENT_CONNECT_RETRIED;
event.data.connected.addr = (char *)addr_; event.data.connect_retried.addr = const_cast <char *> (addr_);
event.data.connect_retried.interval = interval_; event.data.connect_retried.interval = interval_;
monitor_event (event); monitor_event (event);
}
} }
void zmq::socket_base_t::event_listening (const char *addr_, int fd_) void zmq::socket_base_t::event_listening (const char *addr_, int fd_)
{ {
zmq_event_t event; if (monitor_events & ZMQ_EVENT_LISTENING) {
if (!(monitor_events & ZMQ_EVENT_LISTENING)) return; zmq_event_t event;
event.event = ZMQ_EVENT_LISTENING; event.event = ZMQ_EVENT_LISTENING;
event.data.connected.addr = (char *)addr_; event.data.listening.addr = const_cast <char *> (addr_);
event.data.listening.fd = fd_; event.data.listening.fd = fd_;
monitor_event (event); monitor_event (event);
}
} }
void zmq::socket_base_t::event_bind_failed (const char *addr_, int err_) void zmq::socket_base_t::event_bind_failed (const char *addr_, int err_)
{ {
zmq_event_t event; if (monitor_events & ZMQ_EVENT_BIND_FAILED) {
if (!(monitor_events & ZMQ_EVENT_BIND_FAILED)) return; zmq_event_t event;
event.event = ZMQ_EVENT_BIND_FAILED; event.event = ZMQ_EVENT_BIND_FAILED;
event.data.connected.addr = (char *)addr_; event.data.bind_failed.addr = const_cast <char *> (addr_);
event.data.bind_failed.err = err_; event.data.bind_failed.err = err_;
monitor_event (event); monitor_event (event);
}
} }
void zmq::socket_base_t::event_accepted (const char *addr_, int fd_) void zmq::socket_base_t::event_accepted (const char *addr_, int fd_)
{ {
zmq_event_t event; if (monitor_events & ZMQ_EVENT_ACCEPTED) {
if (!(monitor_events & ZMQ_EVENT_ACCEPTED)) return; zmq_event_t event;
event.event = ZMQ_EVENT_ACCEPTED; event.event = ZMQ_EVENT_ACCEPTED;
event.data.connected.addr = (char *)addr_; event.data.accepted.addr = const_cast <char *> (addr_);
event.data.accepted.fd = fd_; event.data.accepted.fd = fd_;
monitor_event (event); monitor_event (event);
}
} }
void zmq::socket_base_t::event_accept_failed (const char *addr_, int err_) void zmq::socket_base_t::event_accept_failed (const char *addr_, int err_)
{ {
zmq_event_t event; if (monitor_events & ZMQ_EVENT_ACCEPT_FAILED) {
if (!(monitor_events & ZMQ_EVENT_ACCEPT_FAILED)) return; zmq_event_t event;
event.event = ZMQ_EVENT_ACCEPT_FAILED; event.event = ZMQ_EVENT_ACCEPT_FAILED;
event.data.connected.addr = (char *)addr_; event.data.accept_failed.addr = const_cast <char *> (addr_);
event.data.accept_failed.err= err_; event.data.accept_failed.err= err_;
monitor_event (event); monitor_event (event);
}
} }
void zmq::socket_base_t::event_closed (const char *addr_, int fd_) void zmq::socket_base_t::event_closed (const char *addr_, int fd_)
{ {
zmq_event_t event; if (monitor_events & ZMQ_EVENT_CLOSED) {
if (!(monitor_events & ZMQ_EVENT_CLOSED)) return; zmq_event_t event;
event.event = ZMQ_EVENT_CLOSED; event.event = ZMQ_EVENT_CLOSED;
event.data.connected.addr = (char *)addr_; event.data.closed.addr = const_cast <char *> (addr_);
event.data.closed.fd = fd_; event.data.closed.fd = fd_;
monitor_event (event); monitor_event (event);
}
} }
void zmq::socket_base_t::event_close_failed (const char *addr_, int err_) void zmq::socket_base_t::event_close_failed (const char *addr_, int err_)
{ {
zmq_event_t event; if (monitor_events & ZMQ_EVENT_CLOSE_FAILED) {
if (!(monitor_events & ZMQ_EVENT_CLOSE_FAILED)) return; zmq_event_t event;
event.event = ZMQ_EVENT_CLOSE_FAILED; event.event = ZMQ_EVENT_CLOSE_FAILED;
event.data.connected.addr = (char *)addr_; event.data.close_failed.addr = const_cast <char *> (addr_);
event.data.close_failed.err = err_; event.data.close_failed.err = err_;
monitor_event (event); monitor_event (event);
}
} }
void zmq::socket_base_t::event_disconnected (const char *addr_, int fd_) void zmq::socket_base_t::event_disconnected (const char *addr_, int fd_)
{ {
zmq_event_t event; if (monitor_events & ZMQ_EVENT_DISCONNECTED) {
if (!(monitor_events & ZMQ_EVENT_DISCONNECTED)) return; zmq_event_t event;
event.event = ZMQ_EVENT_DISCONNECTED; event.event = ZMQ_EVENT_DISCONNECTED;
event.data.connected.addr = (char *)addr_; event.data.disconnected.addr = const_cast <char *> (addr_);
event.data.disconnected.fd = fd_; event.data.disconnected.fd = fd_;
monitor_event (event); monitor_event (event);
}
} }
void zmq::socket_base_t::monitor_event (zmq_event_t event_) void zmq::socket_base_t::monitor_event (zmq_event_t event_)
{ {
zmq_msg_t msg; zmq_msg_t msg;
if (!monitor_socket) return; if (!monitor_socket)
return;
zmq_msg_init_size (&msg, sizeof (event_)); zmq_msg_init_size (&msg, sizeof (event_));
memcpy (zmq_msg_data (&msg), &event_, sizeof (event_)); memcpy (zmq_msg_data (&msg), &event_, sizeof (event_));
zmq_sendmsg (monitor_socket, &msg, 0); zmq_sendmsg (monitor_socket, &msg, 0);