#ifndef TOR_PUBSUB_BUILDER_ST_H
#define TOR_PUBSUB_BUILDER_ST_H
#ifdef PUBSUB_PRIVATE
#include <stdbool.h>
#include <stddef.h>
struct dispatch_cfg_t;
struct smartlist_t;
struct pub_binding_t;
typedef struct pubsub_cfg_t {
bool is_publish;
subsys_id_t subsys;
channel_id_t channel;
message_id_t msg;
msg_type_id_t type;
unsigned flags;
struct pub_binding_t *pub_binding;
recv_fn_t recv_fn;
const char *added_by_file;
unsigned added_by_line;
} pubsub_cfg_t;
typedef struct pubsub_type_cfg_t {
msg_type_id_t type;
dispatch_typefns_t fns;
subsys_id_t subsys;
const char *added_by_file;
unsigned added_by_line;
} pubsub_type_cfg_t;
struct pubsub_items_t {
struct smartlist_t *items;
struct smartlist_t *type_items;
};
struct pubsub_builder_t {
int n_connectors;
int n_errors;
struct pubsub_items_t *items;
struct dispatch_cfg_t *cfg;
};
struct pubsub_connector_t {
struct pubsub_builder_t *builder;
subsys_id_t subsys_id;
};
typedef struct pubsub_adjmap_t {
size_t n_subsystems;
struct smartlist_t **pub_by_subsys;
struct smartlist_t **sub_by_subsys;
size_t n_msgs;
struct smartlist_t **pub_by_msg;
struct smartlist_t **sub_by_msg;
} pubsub_adjmap_t;
#endif
#endif