Exemplo n.º 1
0
static int luasocket_new1(lua_State *L){
	luaRef_t obj = toluaRef(L,1);
	int domain = lua_tointeger(L,2);
	int type = lua_tointeger(L,3);
	luasocket_t luasock;
	handle_t sock;
	if(type == SOCK_STREAM){
		sock = kn_new_sock(domain,type,IPPROTO_TCP);	
		if(!sock){
			lua_pushnil(L);
			return 1;
		}
		luasock = calloc(1,sizeof(*luasock));
		luasock->type = _SOCKET;
		kn_sock_setud(sock,luasock);	
	}else if(type == SOCK_DGRAM){
		uint32_t    recvbuf_size = lua_tointeger(L,4);
		decoder*    _decoder = (decoder*)lua_touserdata(L,5);
		luasock = calloc(1,sizeof(*luasock));
		luasock->datagram = new_datagram(domain,recvbuf_size,_decoder);
		luasock->type = _DATAGRAM;
		sock = datagram_gethandle(luasock->datagram);				
		datagram_setud(luasock->datagram,luasock,destroy_luasocket);
		datagram_associate(g_engine,luasock->datagram,on_datagram); 	
	}else{
		lua_pushnil(L);
		return 1;
	}
	luasock->sock = sock;
	luasock->luaObj = obj;	
	lua_pushlightuserdata(L,luasock);
	return 1;
}
Exemplo n.º 2
0
int main(int argc,char **argv){
	signal(SIGPIPE,SIG_IGN);
	engine_t p = kn_new_engine();
	kn_sockaddr local;
	kn_addr_init_in(&local,argv[1],atoi(argv[2]));
	
	handle_t l = kn_new_sock(AF_INET,SOCK_STREAM,IPPROTO_TCP);
	kn_sock_listen(p,l,&local,on_accept,p);
	kn_reg_timer(p,1000,timer_callback,NULL);		
	kn_engine_run(p);
	return 0;
}
Exemplo n.º 3
0
int main(int argc,char **argv){
	signal(SIGPIPE,SIG_IGN);	
	//create ioworker and logicprocessor
	logicprocessor_t logic = create_logic(on_new_connection,on_packet,on_disconnected);
	_worker = ioworker_new(logic);
	//run net worker thread
	ioworker_startrun(_worker);
	//run logic process thread
	logic_startrun(logic);

	//start listen
	engine_t p = kn_new_engine();
	kn_sockaddr local;
	kn_addr_init_in(&local,argv[1],atoi(argv[2]));
	
	handle_t l = kn_new_sock(AF_INET,SOCK_STREAM,IPPROTO_TCP);
	if(0 == kn_sock_listen(l,&local)){
		kn_engine_associate(p,l,on_accept);
		kn_engine_run(p);
	}
	return 0;
}