diff --git a/draft/zmq4.go b/draft/zmq4.go index a084142..238c4bf 100644 --- a/draft/zmq4.go +++ b/draft/zmq4.go @@ -1354,6 +1354,30 @@ func (soc *Socket) Monitor(addr string, events Event) error { return nil } +/* +Return a connected PAIR socket ready to receive the event notifications. +*/ +func GetMonitorSocket(sock *Socket, events Event) (monitor_sock *Socket, err error) { + fd, err := sock.GetFd() + if err != nil { + return + } + addr := fmt.Sprintf("inproc://monitor.s-%d", fd) + err = sock.Monitor(addr, events) + if err != nil { + return + } + monitor_sock, err = NewSocket(PAIR) + if err != nil { + return + } + err = monitor_sock.Connect(addr) + if err != nil { + return + } + return +} + /* Receive a message part from a socket interpreted as an event. diff --git a/zmq4.go b/zmq4.go index 1c1f97e..efdaae6 100644 --- a/zmq4.go +++ b/zmq4.go @@ -1230,6 +1230,30 @@ func (soc *Socket) Monitor(addr string, events Event) error { return nil } +/* +Return a connected PAIR socket ready to receive the event notifications. +*/ +func GetMonitorSocket(sock *Socket, events Event) (monitor_sock *Socket, err error) { + fd, err := sock.GetFd() + if err != nil { + return + } + addr := fmt.Sprintf("inproc://monitor.s-%d", fd) + err = sock.Monitor(addr, events) + if err != nil { + return + } + monitor_sock, err = NewSocket(PAIR) + if err != nil { + return + } + err = monitor_sock.Connect(addr) + if err != nil { + return + } + return +} + /* Receive a message part from a socket interpreted as an event.