tor  0.4.2.1-alpha-dev
Macros | Functions
pubsub_build.c File Reference
#include "lib/dispatch/dispatch.h"
#include "lib/dispatch/dispatch_cfg.h"
#include "lib/dispatch/dispatch_naming.h"
#include "lib/dispatch/msgtypes.h"
#include "lib/pubsub/pubsub_flags.h"
#include "lib/pubsub/pub_binding_st.h"
#include "lib/pubsub/pubsub_build.h"
#include "lib/pubsub/pubsub_builder_st.h"
#include "lib/pubsub/pubsub_connect.h"
#include "lib/container/smartlist.h"
#include "lib/log/util_bug.h"
#include "lib/malloc/malloc.h"
#include <string.h>

Go to the source code of this file.

Functions

static pubsub_items_tpubsub_items_new (void)
 
void pubsub_items_free_ (pubsub_items_t *cfg)
 
pubsub_builder_tpubsub_builder_new (void)
 
void pubsub_builder_free_ (pubsub_builder_t *pb)
 
pubsub_connector_tpubsub_connector_for_subsystem (pubsub_builder_t *builder, subsys_id_t subsys)
 
void pubsub_connector_free_ (pubsub_connector_t *con)
 
int pubsub_add_pub_ (pubsub_connector_t *con, pub_binding_t *out, channel_id_t channel, message_id_t msg, msg_type_id_t type, unsigned flags, const char *file, unsigned line)
 
int pubsub_add_sub_ (pubsub_connector_t *con, recv_fn_t recv_fn, channel_id_t channel, message_id_t msg, msg_type_id_t type, unsigned flags, const char *file, unsigned line)
 
int pubsub_connector_register_type_ (pubsub_connector_t *con, msg_type_id_t type, dispatch_typefns_t *fns, const char *file, unsigned line)
 
static void pubsub_items_install_bindings (pubsub_items_t *items, dispatch_t *d)
 
void pubsub_items_clear_bindings (pubsub_items_t *items)
 
dispatch_tpubsub_builder_finalize (pubsub_builder_t *builder, pubsub_items_t **items_out)
 

Detailed Description

Construct a dispatch_t in safer, more OO way.

Definition in file pubsub_build.c.

Function Documentation

◆ pubsub_add_pub_()

int pubsub_add_pub_ ( pubsub_connector_t con,
pub_binding_t out,
channel_id_t  channel,
message_id_t  msg,
msg_type_id_t  type,
unsigned  flags,
const char *  file,
unsigned  line 
)

Use con to add a request for being able to publish messages of type msg with auxiliary data of type on channel.

Definition at line 124 of file pubsub_build.c.

◆ pubsub_add_sub_()

int pubsub_add_sub_ ( pubsub_connector_t con,
recv_fn_t  recv_fn,
channel_id_t  channel,
message_id_t  msg,
msg_type_id_t  type,
unsigned  flags,
const char *  file,
unsigned  line 
)

Use con to add a request for being able to publish messages of type msg with auxiliary data of type on channel, passing them to the callback in recv_fn.

Definition at line 171 of file pubsub_build.c.

◆ pubsub_builder_finalize()

dispatch_t* pubsub_builder_finalize ( pubsub_builder_t builder,
pubsub_items_t **  items_out 
)

Create a new dispatcher as configured in a pubsub_builder_t.

Consumes and frees its input.

Definition at line 278 of file pubsub_build.c.

◆ pubsub_builder_free_()

void pubsub_builder_free_ ( pubsub_builder_t pb)

Release all storage held by a pubsub_builder_t.

You'll (mostly) only want to call this function on an error case: if you're constructing a dispatch_t instead, you should call pubsub_builder_finalize() to consume the pubsub_builder_t.

Definition at line 74 of file pubsub_build.c.

◆ pubsub_builder_new()

pubsub_builder_t* pubsub_builder_new ( void  )

Construct and return a new pubsub_builder_t.

Definition at line 56 of file pubsub_build.c.

Referenced by pubsub_install().

◆ pubsub_connector_for_subsystem()

pubsub_connector_t* pubsub_connector_for_subsystem ( pubsub_builder_t builder,
subsys_id_t  subsys 
)

Create and return a pubsub_connector_t for the subsystem with ID subsys to use in adding publications, subscriptions, and types to builder.

Definition at line 89 of file pubsub_build.c.

References tor_assert().

◆ pubsub_connector_free_()

void pubsub_connector_free_ ( pubsub_connector_t con)

Release all storage held by a pubsub_connector_t.

Definition at line 107 of file pubsub_build.c.

References tor_assert(), and tor_free.

◆ pubsub_connector_register_type_()

int pubsub_connector_register_type_ ( pubsub_connector_t con,
msg_type_id_t  type,
dispatch_typefns_t fns,
const char *  file,
unsigned  line 
)

Use con to define the functions to use for manipulating the type type. Any function pointers left as NULL will be implemented as no-ops.

Definition at line 216 of file pubsub_build.c.

◆ pubsub_items_clear_bindings()

void pubsub_items_clear_bindings ( pubsub_items_t items)

Remove the dispatch_ptr fields for all the relevant publish bindings in items. The prevents subsequent dispatch_pub_() calls from sending messages to a dispatcher that has been freed.

Definition at line 263 of file pubsub_build.c.

References SMARTLIST_FOREACH_BEGIN.

◆ pubsub_items_free_()

void pubsub_items_free_ ( pubsub_items_t cfg)

Release all storage held in a pubsub_items_t.

Definition at line 42 of file pubsub_build.c.

References SMARTLIST_FOREACH, and tor_free.

◆ pubsub_items_install_bindings()

static void pubsub_items_install_bindings ( pubsub_items_t items,
dispatch_t d 
)
static

Initialize the dispatch_ptr field in every relevant publish binding for d.

Definition at line 245 of file pubsub_build.c.

References SMARTLIST_FOREACH_BEGIN.

◆ pubsub_items_new()

static pubsub_items_t* pubsub_items_new ( void  )
static

Construct and return a new empty pubsub_items_t.

Definition at line 32 of file pubsub_build.c.