コード例 #1
0
ファイル: battleservice.c プロジェクト: Stan1990/KendyNet
battleservice_t new_battleservice()
{
	lua_State *L = luaL_newstate();
	luaL_openlibs(L);
	if (luaL_dofile(L,"battlemgr.lua")) {
		const char * error = lua_tostring(L, -1);
		lua_pop(L,1);
		printf("%s\n",error);
		exit(0);
	}
	register_battle_cfunction(L);
	battleservice_t bservice = calloc(1,sizeof(*bservice));
	if(0 != CALL_LUA_FUNC(L,"CreateBattleMgr",1))
	{
		const char * error = lua_tostring(L, -1);
		lua_pop(L,1);
		printf("%s\n",error);
		exit(0);
	}
	bservice->battlemgr = create_luaObj(L,-1);
	bservice->msgdisp = new_msgdisp(NULL,NULL,NULL, NULL,battle_processpacket,NULL);
	bservice->thd = create_thread(THREAD_JOINABLE);
    thread_start_run(bservice->thd,service_main,(void*)bservice);
	return bservice;
}
コード例 #2
0
ファイル: asynserver.c プロジェクト: grasswin/KendyNet
int main(int argc,char **argv)
{
    //msgque_flush_time = 5;
    setup_signal_handler();
    InitNetSystem();

    //共用网络层,两个线程各运行一个echo服务
    wpacket_allocator = new_obj_allocator(sizeof(struct wpacket),8192);
    rpacket_allocator = new_obj_allocator(sizeof(struct rpacket),8192);
    asynnet_t asynet = asynnet_new(2);
    msgdisp_t  disp1 = new_msgdisp(asynet,5,
                                   CB_CONNECT(asynconnect),
                                   CB_CONNECTED(asynconnected),
                                   CB_DISCNT(asyndisconnected),
                                   CB_PROCESSPACKET(asynprocesspacket),
                                   CB_CONNECTFAILED(asynconnectfailed));

    /*msgdisp_t  disp2 = new_msgdisp(asynet,
                                  asynconnect,
                                  asynconnected,
                                  asyndisconnected,
                                  asynprocesspacket,
                                  asynconnectfailed);
    */
    thread_t service1 = create_thread(THREAD_JOINABLE);
    //thread_t service2 = create_thread(THREAD_JOINABLE);

    ip = argv[1];
    port = atoi(argv[2]);

    thread_start_run(service1,service_main,(void*)disp1);
    //sleepms(1000);
    //thread_start_run(service2,service_main,(void*)disp2);

    uint32_t tick,now;
    tick = now = GetSystemMs();
    while(!stop){
        sleepms(1000);
        now = GetSystemMs();
        //if(now - tick > 1000)
        {
            uint32_t elapse = now-tick;
            recvsize = (recvsize/elapse)/1000;
            printf("client_count:%d,recvsize:%d,recvcount:%d\n",client_count,recvsize,recvcount);
            tick = now;
            packet_send_count = 0;
            recvcount = 0;
            recvsize = 0;
        }
    }

    thread_join(service1);
    //thread_join(service2);

    CleanNetSystem();
    return 0;
}
コード例 #3
0
ファイル: gateservice.c プロジェクト: Stan1990/KendyNet
int main(int argc,char **argv)
{
    setup_signal_handler();
    InitNetSystem();

    asynnet_t asynet = asynnet_new(3);//3个poller,1个用于监听,1个用于处理客户端连接,1个用于处理服务器连接

    msgdisp_t  disp_to_server = new_msgdisp(asynet,3,
                                            CB_CONNECT(to_server_connect),
                                            CB_CONNECTED(to_server_connected),
                                            CB_PROCESSPACKET(to_server_process));

    msgdisp_t  disp_to_client = new_msgdisp(asynet,2,
                                            CB_CONNECT(to_client_connect),
                                            CB_ASYNPROCESSPACKET(to_client_process));

    thread_t service1 = create_thread(THREAD_JOINABLE);
    thread_t service2 = create_thread(THREAD_JOINABLE);

    to_client_ip = argv[1];
    to_client_port = atoi(argv[2]);


    to_server_ip = argv[3];
    to_server_port = atoi(argv[4]);

    thread_start_run(service1,service_toserver,(void*)disp_to_server);
    sleepms(1000);
    thread_start_run(service2,service_toclient,(void*)disp_to_client);

    while(!stop){
        sleepms(100);
    }

    thread_join(service1);
    thread_join(service2);

    CleanNetSystem();
    return 0;
}
コード例 #4
0
ファイル: testredis.c プロジェクト: Stan1990/KendyNet
int main(int argc,char **argv)
{
    setup_signal_handler();
    msgdisp_t disp1 = new_msgdisp(NULL,0);

    thread_t service1 = create_thread(THREAD_JOINABLE);

    msgdisp_t disp2 = new_msgdisp(NULL,0);

    thread_t service2 = create_thread(THREAD_JOINABLE);    
    asydb = new_asyndb();
    asydb->connectdb(asydb,"127.0.0.1",6379);
    asydb->connectdb(asydb,"127.0.0.1",6379);
    //发出第一个请求uu
    char req[256];
    snprintf(req,256,"set key%d %d",g,g);
    
    asydb->request(asydb,new_dbrequest(db_set,req,db_setcallback,disp1,disp1));
    thread_start_run(service1,service_main,(void*)disp1);

    asydb->request(asydb,new_dbrequest(db_set,req,db_setcallback,disp2,disp2));
    thread_start_run(service2,service_main,(void*)disp2);    
    
    uint32_t tick,now;
    tick = now = GetSystemMs();
    while(!stop){
        sleepms(100);
        now = GetSystemMs();
        if(now - tick > 1000)
        {
            printf("count:%d\n",count);
            tick = now;
            count = 0;
        }
    }
    thread_join(service1);
    thread_join(service2);
    return 0;
}
コード例 #5
0
ファイル: agentservice.c プロジェクト: Stan1990/KendyNet
agentservice_t new_agentservice(uint8_t agentid,asynnet_t asynet){
	agentservice_t service = calloc(1,sizeof(*service));
	service->agentid = agentid;
	service->_idmgr = new_idmgr(1,MAX_ANGETPLAYER);
	service->msgdisp = new_msgdisp(asynet,
                             	   NULL,
                                   agent_connected,
                                   agent_disconnected,
                                   agent_processpacket,
                                   NULL);
	service->thd = create_thread(THREAD_JOINABLE); 
	thread_start_run(service->thd,service_main,(void*)service);
	return service;
}
コード例 #6
0
ファイル: gateserver.c プロジェクト: jonesgithub/bigchallenge
int main(){

	lua_State *L = luaL_newstate();
	luaL_openlibs(L);
	if (luaL_dofile(L,"gateconfig.lua")) {
		const char * error = lua_tostring(L, -1);
		lua_pop(L,1);
		printf("%s\n",error);
		return 0;
	}
		
	luaObject_t gatecfg = GETGLOBAL_OBJECT(L,"gateserver");
	agentcount = GET_OBJ_FIELD(gatecfg,"agentservice_count",int,lua_tonumber);
	release_luaObj(gatecfg);
	
	luaObject_t toclicfg = GETGLOBAL_OBJECT(L,"toclient");
	string_t cliip = new_string(GET_OBJ_FIELD(toclicfg,"ip",const char *,lua_tostring));
	int      cliport = GET_OBJ_FIELD(toclicfg,"port",int,lua_tonumber);
	release_luaObj(toclicfg);
	
	luaObject_t togamecfg = GETGLOBAL_OBJECT(L,"togame");
	g_gameip = new_string(GET_OBJ_FIELD(togamecfg,"ip",const char *,lua_tostring));
	g_gameport = GET_OBJ_FIELD(togamecfg,"port",int,lua_tonumber);
	release_luaObj(togamecfg);
	
	luaObject_t torediscfg = GETGLOBAL_OBJECT(L,"toredis");
	g_redisip = new_string(GET_OBJ_FIELD(torediscfg,"ip",const char *,lua_tostring));
	g_redisport = GET_OBJ_FIELD(torediscfg,"port",int,lua_tonumber);
	release_luaObj(torediscfg);
	
	lua_close(L);
	
	InitNetSystem();
	
	
	//两个poller,一个用于accept,一个用于数据传输
	asynnet_t asynet = asynnet_new(1);
	
	if(start_verifyservice() != 0){
		SYS_LOG(LOG_ERROR,"start verifyservice failed\n");
		return 0;
	}
	
	/*if(start_togame_service(asynet) != 0){
		SYS_LOG(LOG_ERROR,"start togame service failed\n");
		return 0;
	}*/
		
	uint8_t i;
	for(i = 0; i < agentcount; ++i){
		g_agents[i] = new_agentservice(i,asynet);
	}
	
	msgdisp_t listener = new_msgdisp(asynet,1,CB_CONNECT(agent_connect));
	//开启对客户端的监听	
	int32_t err = 0;
	listener->listen(listener,0,to_cstr(cliip),cliport,&err);
	if(err != 0)
	{
		SYS_LOG(LOG_ERROR,"start listen failed:%d\n",err);
		return 0;
	}
	setup_signal_handler();	    
    while(!stop){
        msg_loop(listener,500);
    }
    
	//stop_togame_service();
	stop_verifyservice();
	
	for(i = 0; i < agentcount; ++i){
		stop_agentservice(g_agents[i]);
	}		

	return 0;
}