Tor
0.4.7.0-alpha-dev
|
Core module for sending and receiving messages. More...
#include "orconfig.h"
#include "lib/dispatch/dispatch.h"
#include "lib/dispatch/dispatch_st.h"
#include "lib/dispatch/dispatch_naming.h"
#include "lib/malloc/malloc.h"
#include "lib/log/util_bug.h"
#include <string.h>
Go to the source code of this file.
Functions | |
void | dispatch_free_msg_ (const dispatch_t *d, msg_t *msg) |
char * | dispatch_fmt_msg_data (const dispatch_t *d, const msg_t *msg) |
void | dispatch_free_ (dispatch_t *d) |
int | dispatch_set_alert_fn (dispatch_t *d, channel_id_t chan, dispatch_alertfn_t fn, void *userdata) |
int | dispatch_send (dispatch_t *d, subsys_id_t sender, channel_id_t channel, message_id_t msg, msg_type_id_t type, msg_aux_data_t auxdata) |
int | dispatch_send_msg (dispatch_t *d, msg_t *m) |
int | dispatch_send_msg_unchecked (dispatch_t *d, msg_t *m) |
static void | dispatcher_run_msg_cbs (const dispatch_t *d, msg_t *m) |
int | dispatch_flush (dispatch_t *d, channel_id_t ch, int max_msgs) |
Core module for sending and receiving messages.
Definition in file dispatch_core.c.
int dispatch_flush | ( | dispatch_t * | d, |
channel_id_t | ch, | ||
int | max_msgs | ||
) |
Run up to max_msgs callbacks for messages on the channel ch on the given dispatcher. Return 0 on success or recoverable failure, -1 on unrecoverable error.
Definition at line 241 of file dispatch_core.c.
Referenced by alertfn_immediate().
char* dispatch_fmt_msg_data | ( | const dispatch_t * | d, |
const msg_t * | msg | ||
) |
Format the auxiliary data held by msg.
Definition at line 43 of file dispatch_core.c.
Referenced by dispatch_send_msg_unchecked(), and dispatcher_run_msg_cbs().
void dispatch_free_ | ( | dispatch_t * | d | ) |
Release all storage held by d.
Definition at line 55 of file dispatch_core.c.
void dispatch_free_msg_ | ( | const dispatch_t * | d, |
msg_t * | msg | ||
) |
Use d to drop all storage held for msg.
(We need the dispatcher so we know how to free the auxiliary data.)
Definition at line 30 of file dispatch_core.c.
int dispatch_send | ( | dispatch_t * | d, |
subsys_id_t | sender, | ||
channel_id_t | channel, | ||
message_id_t | msg, | ||
msg_type_id_t | type, | ||
msg_aux_data_t | auxdata | ||
) |
Send a message on the appropriate channel notifying that channel if necessary.
This function takes ownership of the auxiliary data; it can't be static or stack-allocated, and the caller is not allowed to use it afterwards.
This function does not check the various vields of the message object for consistency.
Definition at line 111 of file dispatch_core.c.
int dispatch_send_msg_unchecked | ( | dispatch_t * | d, |
msg_t * | m | ||
) |
Send a message on the appropriate queue, notifying that queue if necessary.
This function takes ownership of the message object and its auxiliary data; it can't be static or stack-allocated, and the caller isn't allowed to use it afterwards.
This function does not check the various fields of the message object for consistency, and can crash if they are out of range. Only functions that have already constructed the message in a safe way, or checked it for correctness themselves, should call this function.
Definition at line 175 of file dispatch_core.c.
int dispatch_set_alert_fn | ( | dispatch_t * | d, |
channel_id_t | chan, | ||
dispatch_alertfn_t | fn, | ||
void * | userdata | ||
) |
Tell the dispatcher to call fn with userdata whenever chan becomes nonempty. Return 0 on success, -1 on error.
Definition at line 88 of file dispatch_core.c.
|
static |
Run all of the callbacks on d associated with m.
Definition at line 208 of file dispatch_core.c.