int packetmgr_start( qqclient* qq ) { int ret; qqpacketmgr *mgr = &qq->packetmgr; memset( mgr, 0, sizeof(qqpacketmgr) ); loop_create( &mgr->recv_loop, MAX_LOOP_PACKET, NULL ); loop_create( &mgr->ready_loop, 128, delete_func ); loop_create( &mgr->temp_loop, 64, delete_func ); loop_create( &mgr->sent_loop, 32, delete_func ); ret = pthread_create( &mgr->thread_recv, NULL, packetmgr_recv, (void*)qq ); return 0; }
EXPORT void webqq_init() { int ret; webqq_running = 1; config_init(); // qqsocket_init(); loop_create( &user_loop, MAX_USERS, delete_func ); ret = pthread_create( &thread_guarder, NULL, webqq_guarder, (void*)0 ); }
LIBCOUCHBASE_API lcb_error_t cb_create_ruby_mt_io_opts(int version, lcb_io_opt_t *io, void *arg) { struct lcb_io_opt_st *ret; rb_mt_loop *loop; (void)arg; if (version != 0) { return LCB_PLUGIN_VERSION_MISMATCH; } ret = calloc(1, sizeof(*ret)); if (ret == NULL) { free(ret); return LCB_CLIENT_ENOMEM; } ret->version = 0; ret->dlhandle = NULL; ret->destructor = lcb_destroy_io_opts; /* consider that struct isn't allocated by the library, * `need_cleanup' flag might be set in lcb_create() */ ret->v.v0.need_cleanup = 0; ret->v.v0.recv = cb_io_recv; ret->v.v0.send = cb_io_send; ret->v.v0.recvv = cb_io_recvv; ret->v.v0.sendv = cb_io_sendv; ret->v.v0.socket = cb_io_socket; ret->v.v0.close = cb_io_close; ret->v.v0.connect = cb_io_connect; ret->v.v0.delete_event = lcb_io_delete_event; ret->v.v0.destroy_event = lcb_io_destroy_event; ret->v.v0.create_event = lcb_io_create_event; ret->v.v0.update_event = lcb_io_update_event; ret->v.v0.delete_timer = lcb_io_delete_timer; ret->v.v0.destroy_timer = lcb_io_destroy_timer; ret->v.v0.create_timer = lcb_io_create_timer; ret->v.v0.update_timer = lcb_io_update_timer; ret->v.v0.run_event_loop = lcb_io_run_event_loop; ret->v.v0.stop_event_loop = lcb_io_stop_event_loop; loop = loop_create(); if (loop == NULL) { free(ret); return LCB_CLIENT_ENOMEM; } ret->v.v0.cookie = loop; *io = ret; return LCB_SUCCESS; }
int main() { int i = 0; loop_t* loop = loop_create(); channel_ref_t* acceptor = 0; channel_ref_t* connector = 0; acceptor = loop_create_channel(loop, 8, 1024); channel_ref_accept(acceptor, 0, 8000, 50); channel_ref_set_cb(acceptor, acceptor_cb); broadcast = broadcast_create(); for (; i < MAX_CONNECTOR; i++) { connector = loop_create_channel(loop, 8, 1024); channel_ref_set_cb(connector, connector_cb); channel_ref_connect(connector, "127.0.0.1", 8000, 0); } loop_run(loop); broadcast_destroy(broadcast); loop_destroy(loop); return 0; }