bool onehop; /**< one-hop circuit? */
} ocirc_cevent_msg_t;
- /** Discriminant values for origin circuit event message */
- typedef enum ocirc_msgtype_t {
- OCIRC_MSGTYPE_STATE,
- OCIRC_MSGTYPE_CHAN,
- OCIRC_MSGTYPE_CEVENT,
- } ocirc_msgtype_t;
-
- /** Discriminated union for the actual message */
- typedef struct ocirc_event_msg_t {
- int type;
- union {
- ocirc_state_msg_t state;
- ocirc_chan_msg_t chan;
- ocirc_cevent_msg_t cevent;
- } u;
- } ocirc_event_msg_t;
-
- /**
- * Receiver function pointer for origin circuit subscribers
- *
- * This function gets called synchronously by the publisher.
- **/
- typedef void (*ocirc_event_rcvr_t)(const ocirc_event_msg_t *);
-
- void ocirc_event_subscribe(ocirc_event_rcvr_t fn);
+ DECLARE_MESSAGE(ocirc_cevent, ocirc_cevent, ocirc_cevent_msg_t *);
#ifdef OCIRC_EVENT_PRIVATE
- void ocirc_event_publish(const ocirc_event_msg_t *msg);
+ void ocirc_state_publish(ocirc_state_msg_t *msg);
+ void ocirc_chan_publish(ocirc_chan_msg_t *msg);
+ void ocirc_cevent_publish(ocirc_cevent_msg_t *msg);
#endif
-#endif /* defined(TOR_OCIRC_EVENT_STATE_H) */
+#endif /* !defined(TOR_OCIRC_EVENT_H) */
int reason; /**< reason */
} orconn_status_msg_t;
- /** Discriminated union for the actual message */
- typedef struct orconn_event_msg_t {
- int type;
- union {
- orconn_state_msg_t state;
- orconn_status_msg_t status;
- } u;
- } orconn_event_msg_t;
-
- /**
- * Receiver function pointer for OR subscribers
- *
- * This function gets called synchronously by the publisher.
- **/
- typedef void (*orconn_event_rcvr_t)(const orconn_event_msg_t *);
-
- void orconn_event_subscribe(orconn_event_rcvr_t);
+ DECLARE_MESSAGE(orconn_status, orconn_status, orconn_status_msg_t *);
#ifdef ORCONN_EVENT_PRIVATE
- void orconn_event_publish(const orconn_event_msg_t *);
+ void orconn_state_publish(orconn_state_msg_t *);
+ void orconn_status_publish(orconn_status_msg_t *);
#endif
-#endif /* defined(TOR_ORCONN_EVENT_H) */
+#endif /* !defined(TOR_ORCONN_EVENT_H) */
#ifndef TOR_BTRACK_CIRCUIT_H
#define TOR_BTRACK_CIRCUIT_H
+ #include "lib/pubsub/pubsub.h"
+
int btrack_circ_init(void);
void btrack_circ_fini(void);
+ int btrack_circ_add_pubsub(pubsub_connector_t *);
-#endif /* defined(TOR_BTRACK_CIRCUIT_H) */
+#endif /* !defined(TOR_BTRACK_CIRCUIT_H) */
bool is_onehop; /**< Is this for a one-hop circuit? */
} bt_orconn_t;
-#endif /* defined(BTRACK_ORCONN_PRIVATE) */
+#endif /* defined(BTRACK_ORCONN_PRIVATE) */
int btrack_orconn_init(void);
+ int btrack_orconn_add_pubsub(pubsub_connector_t *);
void btrack_orconn_fini(void);
-#endif /* defined(TOR_BTRACK_ORCONN_H) */
+#endif /* !defined(TOR_BTRACK_ORCONN_H) */