]> git.proxmox.com Git - mirror_frr.git/blobdiff - lib/frr_zmq.h
Merge pull request #13649 from donaldsharp/unlock_the_node_or_else
[mirror_frr.git] / lib / frr_zmq.h
index f12291d60210f1030f63b2d2e6c98cec36922bf6..73da3770f4b90717898df1724e3154d22104e56f 100644 (file)
@@ -7,7 +7,7 @@
 #ifndef _FRRZMQ_H
 #define _FRRZMQ_H
 
-#include "thread.h"
+#include "frrevent.h"
 #include <zmq.h>
 
 #ifdef __cplusplus
@@ -26,7 +26,7 @@ extern "C" {
 
 /* callback integration */
 struct cb_core {
-       struct thread *thread;
+       struct event *thread;
        void *arg;
 
        bool cancelled;
@@ -59,30 +59,29 @@ extern void frrzmq_finish(void);
 
 #define _xref_zmq_a(type, f, d, call)                                          \
        ({                                                                     \
-               static const struct xref_threadsched _xref                     \
-                               __attribute__((used)) = {                      \
-                       .xref = XREF_INIT(XREFT_THREADSCHED, NULL, __func__),  \
+               static const struct xref_eventsched _xref __attribute__(       \
+                       (used)) = {                                            \
+                       .xref = XREF_INIT(XREFT_EVENTSCHED, NULL, __func__),   \
                        .funcname = #f,                                        \
                        .dest = #d,                                            \
-                       .thread_type = THREAD_ ## type,                        \
+                       .event_type = EVENT_##type,                            \
                };                                                             \
                XREF_LINK(_xref.xref);                                         \
                call;                                                          \
-       })                                                                     \
-       /* end */
+       }) /* end */
 
 /* core event registration, one of these 2 macros should be used */
-#define frrzmq_thread_add_read_msg(m, f, e, a, z, d)                           \
+#define frrzmq_event_add_read_msg(m, f, e, a, z, d)                            \
        _xref_zmq_a(READ, f, d,                                                \
-               _frrzmq_thread_add_read(&_xref, m, f, NULL, e, a, z, d))
+                   _frrzmq_event_add_read(&_xref, m, f, NULL, e, a, z, d))
 
-#define frrzmq_thread_add_read_part(m, f, e, a, z, d)                          \
+#define frrzmq_event_add_read_part(m, f, e, a, z, d)                           \
        _xref_zmq_a(READ, f, d,                                                \
-               _frrzmq_thread_add_read(&_xref, m, NULL, f, e, a, z, d))
+                   _frrzmq_event_add_read(&_xref, m, NULL, f, e, a, z, d))
 
-#define frrzmq_thread_add_write_msg(m, f, e, a, z, d)                          \
+#define frrzmq_event_add_write_msg(m, f, e, a, z, d)                           \
        _xref_zmq_a(WRITE, f, d,                                               \
-               _frrzmq_thread_add_write(&_xref, m, f, e, a, z, d))
+                   _frrzmq_event_add_write(&_xref, m, f, e, a, z, d))
 
 struct cb_core;
 struct frrzmq_cb;
@@ -108,18 +107,20 @@ struct frrzmq_cb;
  *   may schedule the event to run as soon as libfrr is back in its main
  *   loop.
  */
-extern int _frrzmq_thread_add_read(
-       const struct xref_threadsched *xref, struct thread_master *master,
-       void (*msgfunc)(void *arg, void *zmqsock),
-       void (*partfunc)(void *arg, void *zmqsock, zmq_msg_t *msg,
-                        unsigned partnum),
-       void (*errfunc)(void *arg, void *zmqsock), void *arg, void *zmqsock,
-       struct frrzmq_cb **cb);
-extern int _frrzmq_thread_add_write(
-       const struct xref_threadsched *xref, struct thread_master *master,
-       void (*msgfunc)(void *arg, void *zmqsock),
-       void (*errfunc)(void *arg, void *zmqsock), void *arg, void *zmqsock,
-       struct frrzmq_cb **cb);
+extern int
+_frrzmq_event_add_read(const struct xref_eventsched *xref,
+                      struct event_loop *master,
+                      void (*msgfunc)(void *arg, void *zmqsock),
+                      void (*partfunc)(void *arg, void *zmqsock,
+                                       zmq_msg_t *msg, unsigned partnum),
+                      void (*errfunc)(void *arg, void *zmqsock), void *arg,
+                      void *zmqsock, struct frrzmq_cb **cb);
+extern int _frrzmq_event_add_write(const struct xref_eventsched *xref,
+                                  struct event_loop *master,
+                                  void (*msgfunc)(void *arg, void *zmqsock),
+                                  void (*errfunc)(void *arg, void *zmqsock),
+                                  void *arg, void *zmqsock,
+                                  struct frrzmq_cb **cb);
 
 extern void frrzmq_thread_cancel(struct frrzmq_cb **cb, struct cb_core *core);