void connection_consumer_start(void *arg) { int rc; struct server_ctx *ctx; uv_loop_t* loop; ctx = arg; loop = uv_loop_new(); listener_event_loops[ctx->index] = *loop; http_request_cache_configure_listener(loop, &listener_async_handles[ctx->index]); uv_barrier_wait(listeners_created_barrier); rc = uv_async_init(loop, &ctx->async_handle, connection_consumer_close); uv_unref((uv_handle_t*) &ctx->async_handle); /* Wait until the main thread is ready. */ uv_sem_wait(&ctx->semaphore); get_listen_handle(loop, (uv_stream_t*) &ctx->server_handle); uv_sem_post(&ctx->semaphore); rc = uv_listen((uv_stream_t*)&ctx->server_handle, 128, connection_consumer_new_connection); rc = uv_run(loop, UV_RUN_DEFAULT); uv_loop_delete(loop); }
/* entry of timer update client map*/ NEINT32 update_client_map(void *param) { NEINT32 cm_num ; NEINT32 sleep = 0 ; //NEUINT16 session_id = 0; cmlist_iterator_t cm_iterator ; struct cm_manager *pmanger ; ne_handle client; ne_usermsgbuf_t sendmsg; ne_handle listen_haneld = get_listen_handle () ; if(!listen_haneld) { ne_sleep(1000) ; return 0 ; } // sendmsg.msg_hdr.packet_hdr = NE_PACKHDR_INIT; ne_usermsghdr_init(&sendmsg.msg_hdr); NE_USERMSG_MAXID(&sendmsg) = MAXID_SYS ; NE_USERMSG_MINID(&sendmsg) = SYM_TEST ; //data = NE_USERMSG_DATA(&sendmsg) ; strcpy(NE_USERMSG_DATA(&sendmsg) , "hello world!") ; NE_USERMSG_LEN(&sendmsg) = 13 + NE_USERMSG_HDRLEN ; NE_USERMSG_PARAM(&sendmsg) = 0 ; cm_num = 0 ; pmanger = ne_listensrv_get_cmmamager(listen_haneld) ; for(client = pmanger->lock_first (pmanger,&cm_iterator) ; client; client = pmanger->lock_next (pmanger,&cm_iterator) ) { ne_sleep(10) ; //simulate processor running ne_sessionmsg_sendex(client,&sendmsg, ESF_NORMAL) ; // if(rand()%9 == 0 ) { // ne_session_close(client,0) ; // } cm_num++ ; } ne_sleep(1000) ; if(cm_num)neprintf("\t\tcurrent connect num=%d\n", cm_num) ; return 0; }