定义模块内部函数,设置回调函数。
/******************************* * client.h *******************************/ typedef struct socket_client socket_client; typedef void (*socket_client_cb_t) (socket_client *c, void *udata); void client_set_callback(socket_client *c, socket_client_cb_t *callback); /******************************* * client.c 或这在初始client时,初始回调函数。
* 主要作用: 如本模块为事务获得模块,那需要调用模块具体事件的分发处理时,调用设置的回调函数 *******************************/ struct socket_client { socket_client_cb_t callback;
void *userdata; };
socket_client *socket_client_new()
{
socket_client *c;
c = (socket_client *)malloc(sizeof(socket_client));
if(!c)
goto fail;
return c;
fail:
return NULL;
}
void client_set_callback(socket_client *c, socket_client_cb_t *callback, void *udata) { c->callback = callback;
c->userdata = udata; }
/* when client receive a message */
void client_call(socket_client *c)
{
c->callback(c, c->userdata);
}
参考:pulseaudio源码pulsecore/socket-client.c代码