#ifndef GLOBALS_H #define GLOBALS_H #ifdef _WIN32 struct comm { SOCKET sock; SOCKADDR_IN sin; }; #elif _ZLGIP struct comm { uint8 us; /* ZLG/IP accept使用变量 */ SOCKET s; /* 连接socket */ struct sockaddr sin; /* 地址信息 */ }; #endif /************************************************************************f 文件系统结构 *************************************************************************/ #ifdef _WINFS typedef int fshandle; /* 有文件系统,handle是int */ #elif _NOFS typedef const char* fshandle; /* 无文件系统,handle是char* */ struct constpage { char * pagename; /* 静态页面名 */ const char * content; /* 静态页面内容 */ }; #elif _FLASHFS typedef int fshandle; /* Flash模拟文件系统,handle是fms下标*/ #define FILE_MAX 10 /* 最大文件个数 */ struct filemap { char filename[32]; /* 文件名 */ uint32 addr; /* 存储地址 */ uint32 len; /* 存储长度 */ }; #endif #ifdef _UCOS #define CGITaskStkLengh 1500 #define CGI_PRIO_START TH_PRIO_START+TH_NUM+2 #define LuaTaskStkLengh 1500 #define LUA_PRIO_START CGI_PRIO_START-1 typedef void (*PCGITASK)(void* pdata); struct cgiinfo { char * cginame; char iobuf[IO_REMOTE]; char env[CGI_ENV_MAX]; PCGITASK pcgitask; OS_STK CGITaskStk[CGITaskStkLengh]; sem_t envsem; sem_t cgisem; sem_t wssem; }; struct luainfo{ sem_t luasem; sem_t wssem; char env[CGI_ENV_MAX]; char cgifile[IO_LOCAL]; char iobuf[IO_REMOTE]; }; #endif struct mimeentry { char * ext; /* mime后缀 */ char * val; /* mime值 */ size_t extlen; /* mime后缀长度 */ }; struct configentry { char * configname; /* config项名 */ char * value; /* config项值 */ }; //struct io //{ // char buf[IO_MAX]; /* io字符串 */ // int done; /* io完成标记 */ // size_t readlen; /* io收到的长度 */ //}; struct io_local { char buf[IO_LOCAL]; /* io字符串 */ int done; /* io完成标记 */ size_t readlen; /* io收到的长度 */ }; struct io_remote { char buf[IO_REMOTE]; /* io字符串 */ /* io完成标记 */ size_t readlen; /* io收到的长度 */ }; //请求数据 struct request { struct comm comm_remote; /* 远端地址 */ time_t ims; /* If-Modified-Since: */ unsigned http_method; /* request要处理的方法 */ struct io_remote io_remote; /* 远端收到的io */ struct io_local io_local; /* 本地要发的io */ char uri[URI_MAX]; /* uri字符串 */ char method[METHOD_MAX]; /* method字符串 */ char protocol[METHOD_MAX]; /* protocol字符串 */ char path[PATH_MAX]; /* 本地全路径 */ unsigned int plength; /* post,data length */ fshandle fd; /* handle to file */ char * query; /* 请求字符串 */ char * message; /* POST消息 */ }; struct requestlist { struct requestlist* next; struct request r; }; typedef void (* TP_Work_Fun)(void * args); /* 用户线程函数 */ struct TP_threadpool; struct TP_node /* 线程节点 */ { struct TP_node *prev, *next; struct TP_threadpool *pool; sem_t sem; TP_Work_Fun fun; void *args; }; struct TP_nodelist /* 线程节点链表 */ { struct TP_node *head,*tail; int num; }; struct TP_threadpool /* 线程池结构 */ { sem_t sem; struct TP_nodelist idle,busy; int minnum,maxnum,minidle,maxidle; }; //global variables extern struct mimeentry mimes[]; extern const int mine_len; extern struct configentry configs[]; extern struct requestlist rlist[]; extern struct requestlist * prlfree; #ifdef _NOFS extern struct constpage cpages[]; extern const int cpage_len; #endif #ifdef _FLASHFS extern struct filemap fms[]; extern int fmno; #endif #ifdef _UCOS extern struct cgiinfo cgiinfos[]; extern const int cgi_len; extern struct luainfo li; extern OS_STK LuaTaskStk[]; #endif #endif