static void _link_exit(void *env,routine_t exitid,int code) { test_t * tt = (test_t*)env; rain_debug(tt->ctx,"_link_exit,jsv8_test:%d,exitid:%d",tt->jsv8_test_id,exitid); rain_exit(tt->ctx,code); }
void * test_init(rain_ctx_t *ctx,char *args) { test_t * tt = malloc(sizeof(test_t)); tt->ctx = ctx; tt->recvsize = 0; tt->cli = 0; char arg[1024]; rain_debug(tt->ctx,"TestRunning,arguments:%s",args); fflush(stdout); int ret = 0; sprintf(arg,"ip=%s&port=%d&watchdog=%d&mode=%s","127.0.0.1",8100,rain_routineid(ctx),"epoll"); ret = rain_spawn(ctx,"tcpsvr",arg,&(tt->tcpsvr_id)); if(ret == RAIN_ERROR){ free(tt); return NULL; } rain_link(ctx,tt->tcpsvr_id); ret = rain_spawn(ctx,"jsv8","test.js",&(tt->jsv8_test_id)); if(ret == RAIN_ERROR){ free(tt); return NULL; } rain_link(ctx,tt->jsv8_test_id); RAIN_CALLBACK(ctx,_recv,_recv_rsp,_link_exit,_time_out,NULL); rain_timeout(ctx,60.0,NULL); return tt; }
static void _time_out(void *env,void *userdata) { test_t * tt = (test_t*)env; rain_debug(tt->ctx,"_time_out"); //rain_kill(tt->ctx,tt->tcpsvr_id,0); rain_kill(tt->ctx,tt->jsv8_test_id,0); }
int tcpsvr_listen(tcpsvr_t* svr,const char *host,int port) { svr->fd = wod_net_tcp_listen(TCP4,host,port); rain_debug(svr->ctx,"wod_net_tcp_listen:%d\n",svr->fd); wod_net_noblock(svr->fd,1); wod_event_io_add(svr->loop,svr->fd,WV_IO_READ,_doAccept,svr); return RAIN_OK; }
void * test_new(struct rain_ctx *ctx,char *args) { test_t * tt = malloc(sizeof(test_t)); tt->ctx = ctx; tt->recvsize = 0; tt->cli = 0; rain_debug(tt->ctx,"TestRunning,arguments:%s",args); fflush(stdout); RAIN_CALLBACK(ctx,_recv,_recv_rsp,_link_exit,_time_out,NULL,_tcp_event); rain_timeout(ctx,60*1000,NULL); tt->tcp = rain_tcp_listen(ctx,"0.0.0.0",8194); tt->x = 0; return tt; }
static void _time_out(void *env,void *userdata) { test_t * tt = (test_t*)env; rain_debug(tt->ctx,"_time_out"); }