void on_accept(handle_t s,void *listener,int _2,int _3){ engine_t p = kn_sock_engine((handle_t)listener); connection_t conn = new_connection(s,4096,new_rpk_decoder(4096)); connection_associate(p,conn,on_packet,on_disconnected); ++client_count; printf("%d\n",client_count); }
static int luasocket_establish(lua_State *L){ luasocket_t luasock = (luasocket_t)lua_touserdata(L,1); uint32_t recvbuf_size = lua_tointeger(L,2); decoder* _decoder = (decoder*)lua_touserdata(L,3); recvbuf_size = size_of_pow2(recvbuf_size); if(recvbuf_size < 1024) recvbuf_size = 1024; connection_t conn = new_connection(luasock->sock,recvbuf_size,_decoder); if(_decoder && _decoder->mask == mask_http_decode) connection_associate(g_engine,conn,on_http_cb,on_disconnected); else connection_associate(g_engine,conn,on_packet,on_disconnected); refobj_inc((refobj*)conn); luasock->type = _STREAM_CONN; luasock->streamconn = conn; connection_setud(conn,luasock,destroy_luasocket); return 0; }