www.pudn.com > ro4fserver.rar > core.h
#include#include #include #include #include #include #include #include #include #include #define BASE_TICK 5 #define RFIFOP(fd,pos) (session[fd]->rdata+session[fd]->rdata_pos+pos) #define RFIFOB(fd,pos) (*(unsigned char*)(session[fd]->rdata+session[fd]->rdata_pos+pos)) #define RFIFOW(fd,pos) (*(unsigned short*)(session[fd]->rdata+session[fd]->rdata_pos+pos)) #define RFIFOL(fd,pos) (*(unsigned int*)(session[fd]->rdata+session[fd]->rdata_pos+pos)) #define RFIFOSKIP(fd,len) (session[fd]->rdata_pos+=len) #define RFIFOREST(fd) (session[fd]->rdata_size-session[fd]->rdata_pos) #define RFIFOFLUSH(fd) (memmove(session[fd]->rdata,RFIFOP(fd,0),RFIFOREST(fd)),session[fd]->rdata_size=RFIFOREST(fd),session[fd]->rdata_pos=0) #define RFIFOSPACE(fd) (session[fd]->max_rdata-session[fd]->rdata_size) #define RBUFP(p,pos) (((unsigned char*)(p))+pos) #define RBUFB(p,pos) (*(unsigned char*)RBUFP(p,pos)) #define RBUFW(p,pos) (*(unsigned short*)RBUFP(p,pos)) #define RBUFL(p,pos) (*(unsigned int*)RBUFP(p,pos)) #define WFIFOSPACE(fd) (session[fd]->max_wdata-session[fd]->wdata_size) #define WFIFOP(fd,pos) (session[fd]->wdata+session[fd]->wdata_size+pos) #define WFIFOB(fd,pos) (*(unsigned char*)(session[fd]->wdata+session[fd]->wdata_size+pos)) #define WFIFOW(fd,pos) (*(unsigned short*)(session[fd]->wdata+session[fd]->wdata_size+pos)) #define WFIFOL(fd,pos) (*(unsigned int*)(session[fd]->wdata+session[fd]->wdata_size+pos)) #define WFIFOSET(fd,len) (session[fd]->wdata_size = (session[fd]->wdata_size+len+2048 < session[fd]->max_wdata) ? session[fd]->wdata_size+len : session[fd]->wdata_size) #define WBUFP(p,pos) (((unsigned char*)(p))+pos) #define WBUFB(p,pos) (*(unsigned char*)WBUFP(p,pos)) #define WBUFW(p,pos) (*(unsigned short*)WBUFP(p,pos)) #define WBUFL(p,pos) (*(unsigned int*)WBUFP(p,pos)) #define TIMER_ONCE_AUTODEL 0 #define TIMER_ONCE 1 #define TIMER_INTERVAL 2 struct TimerData { unsigned int tick; int (*func)(int,unsigned int,int,int); int id; int data; int type; int interval; } **timer_data; struct socket_data{ int eof; unsigned char *rdata,*wdata; int max_rdata,max_wdata; int rdata_size,wdata_size; int rdata_pos; struct sockaddr_in client_addr; int (*func_recv)(int); int (*func_send)(int); int (*func_parse)(int); void* session_data; } *session[FD_SETSIZE]; int rfifo_size,wfifo_size; int (*default_func_parse)(int); void (*term_func)(void); int do_init(int,char**); int make_listen_port(int); int make_connection(long,int); int delete_session(int); unsigned int gettick(void); int add_timer(unsigned int,int (*)(int,unsigned int,int,int),int,int); int delete_timer(int); int add_basic_loop_func(int (*)(int)); int del_basic_loop_func(int);