The eXtremeDB Active Replication Fabric callbacks are functions defined with the structures described below.
For an overview see page ARF Applications in C
The following structures are used to define callback functions which are registered with
mco_iot_comm_register_callback()and dropped withmco_iot_comm_unregister_callback():typedef struct mco_iot_read_stream_t_ { void *handle; mco_stream_read reader; } mco_iot_read_stream_t; typedef struct iot_ack_t_ { uint8 seq; uint8 sender_agent_id; uint8 receiver_agent_id; uint8 timestamp; uint4 error_code; } iot_ack_t; typedef struct iot_comm_callback_t_ { int (*onConnect) (mco_iot_connection_h iotc, void *context); int (*onReceive) (mco_iot_connection_h iotc, mco_iot_read_stream_t *stream, void *context); int (*onAck) (mco_iot_connection_h iotc, const iot_ack_t *ack, void *context); int (*onDisconnect) (mco_iot_connection_h iotc, void *context); int (*onDestroy) (mco_iot_connection_h iotc, void *context); } iot_comm_callback_t;Callback Events
The callback functions defined in structure
iot_comm_callback_tare called for the following events:
onConnect Called when the a communication is established either through connect()oraccept()onReceive Called when data is received (a set of serialized objects) onAck Called when the acknowledgment for previously sent data ( ACKmessage) is receivedonDisconnect Called when a connection is disconnected onDestroy Called prior to destroying a connection Usage
Note that the
void * contextargument is a user-defined context (a pointer to a structure containing application-specific data). Any of the callback functions registered in theiot_comm_callback_t_structure must either returnIOT_CALLBACK_OK(successful completion) orIOT_CALLBACK_FAIL(in case of an error, the corresponding connection will be disconnected). Also note that if the callback is not used, it can be set to null.Example
{ ... iot_comm_callback_t my_callback = {&my_on_connect, 0, 0, &my_on_disconnect, 0}; ... mco_iot_comm_register_callback(comm, &my_callback, my_context); }