正在显示
1 个修改的文件
包含
127 行增加
和
0 行删除
src/server/spserver/spwin32port.hpp
0 → 100644
1 | +/* | ||
2 | + * Copyright 2008 Stephen Liu | ||
3 | + * For license terms, see the file COPYING along with this library. | ||
4 | + */ | ||
5 | + | ||
6 | +#ifndef __spwin32port_hpp__ | ||
7 | +#define __spwin32port_hpp__ | ||
8 | + | ||
9 | +#pragma warning(disable: 4996) | ||
10 | + | ||
11 | +#include <winsock2.h> | ||
12 | +#include <mswsock.h> | ||
13 | +#include <windows.h> | ||
14 | +#include <io.h> | ||
15 | + | ||
16 | +#ifdef __cplusplus | ||
17 | +extern "C" { | ||
18 | +#endif | ||
19 | + | ||
20 | +typedef unsigned short uint16_t; | ||
21 | +typedef unsigned __int64 uint64_t; | ||
22 | +typedef int socklen_t; | ||
23 | + | ||
24 | +#ifndef WSAID_DISCONNECTEX | ||
25 | + #define WSAID_DISCONNECTEX {0x7fda2e11,0x8630,0x436f,{0xa0, 0x31, 0xf5, 0x36, 0xa6, 0xee, 0xc1, 0x57}} | ||
26 | + typedef BOOL (WINAPI *LPFN_DISCONNECTEX)(SOCKET, LPOVERLAPPED, DWORD, DWORD); | ||
27 | +#endif | ||
28 | + | ||
29 | +#if _MSC_VER >= 1400 | ||
30 | +#define localtime_r(_clock, _result) localtime_s(_result, _clock) | ||
31 | +#define gmtime_r(_clock, _result) gmtime_s(_result, _clock) | ||
32 | +#define strcasecmp _stricmp | ||
33 | +#define strncasecmp _strnicmp | ||
34 | +#else | ||
35 | +#define localtime_r(_clock, _result) ( *(_result) = *localtime( (_clock) ), (_result) ) | ||
36 | +#define gmtime_r(_clock, _result) ( *(_result) = *gmtime( (_clock) ), (_result) ) | ||
37 | +#define strcasecmp stricmp | ||
38 | +#define strncasecmp strnicmp | ||
39 | +#endif | ||
40 | + | ||
41 | +#define snprintf _snprintf | ||
42 | +#define pause() Sleep((32767L << 16) + 32767) | ||
43 | +#define sleep(x) Sleep(x*1000) | ||
44 | + | ||
45 | +#define sp_close closesocket | ||
46 | +#define sp_writev spwin32_writev | ||
47 | +#define sp_inet_aton spwin32_inet_aton | ||
48 | +#define sp_socketpair spwin32_socketpair | ||
49 | +#define sp_initsock spwin32_initsocket | ||
50 | +#define sp_gettimeofday spwin32_gettimeofday | ||
51 | + | ||
52 | +#define sp_syslog g_spwin32_syslog | ||
53 | +#define sp_openlog spwin32_openlog | ||
54 | +#define sp_closelog spwin32_closelog | ||
55 | +#define sp_setlogmask spwin32_setlogmask | ||
56 | + | ||
57 | +/* Windows writev() support */ | ||
58 | +struct iovec | ||
59 | +{ | ||
60 | + u_long iov_len; | ||
61 | + char *iov_base; | ||
62 | +}; | ||
63 | + | ||
64 | +extern int spwin32_writev(SOCKET sock, const struct iovec *vector, DWORD count); | ||
65 | + | ||
66 | +extern int spwin32_inet_aton(const char *c, struct in_addr* addr); | ||
67 | + | ||
68 | +extern int spwin32_socketpair(int d, int type, int protocol, int sv[2]); | ||
69 | + | ||
70 | +/* @return >0 OK, 0 FAIL */ | ||
71 | +extern DWORD spwin32_getppid(void); | ||
72 | + | ||
73 | +/* @return 0 OK, -1 Fail*/ | ||
74 | +extern int spwin32_getexefile( DWORD pid, char * path, int size ); | ||
75 | + | ||
76 | +extern const char * spwin32_strerror( DWORD lastError, char * errmsg, size_t len ); | ||
77 | + | ||
78 | +extern void spwin32_pwd( char * path, int size ); | ||
79 | + | ||
80 | +/* @return 0 OK, -1 Fail */ | ||
81 | +extern int spwin32_initsocket(); | ||
82 | + | ||
83 | +extern void spwin32_pause_console(); | ||
84 | + | ||
85 | +extern int spwin32_gettimeofday(struct timeval* tv, void * ); | ||
86 | + | ||
87 | +/* Windows syslog() support */ | ||
88 | + | ||
89 | +#define LOG_EMERG 0 | ||
90 | +#define LOG_ALERT 1 | ||
91 | +#define LOG_CRIT 2 | ||
92 | +#define LOG_ERR 3 | ||
93 | +#define LOG_WARNING 4 | ||
94 | +#define LOG_NOTICE 5 | ||
95 | +#define LOG_INFO 6 | ||
96 | +#define LOG_DEBUG 7 | ||
97 | + | ||
98 | +/* | ||
99 | + * Option flags for openlog. | ||
100 | + * | ||
101 | + * LOG_ODELAY no longer does anything. | ||
102 | + * LOG_NDELAY is the inverse of what it used to be. | ||
103 | + */ | ||
104 | +#define LOG_PID 0x01 /* log the pid with each message */ | ||
105 | +#define LOG_CONS 0x02 /* log on the console if errors in sending */ | ||
106 | +#define LOG_ODELAY 0x04 /* delay open until first syslog() (default) */ | ||
107 | +#define LOG_NDELAY 0x08 /* don't delay open */ | ||
108 | +#define LOG_NOWAIT 0x10 /* don't wait for console forks: DEPRECATED */ | ||
109 | +#define LOG_PERROR 0x20 /* log to stderr as well */ | ||
110 | + | ||
111 | +#define LOG_USER (1<<3) | ||
112 | + | ||
113 | +extern void spwin32_syslog (int priority, const char * format, ...); | ||
114 | +extern void spwin32_closelog (void); | ||
115 | +extern void spwin32_openlog (const char *ident , int option , int facility); | ||
116 | +extern int spwin32_setlogmask (int priority); | ||
117 | + | ||
118 | +typedef void ( * spwin32_logger_t ) ( int priority, const char * format, ... ); | ||
119 | + | ||
120 | +/* default is spwin32_syslog, write to stdout */ | ||
121 | +extern spwin32_logger_t g_spwin32_syslog; | ||
122 | + | ||
123 | +#ifdef __cplusplus | ||
124 | +} | ||
125 | +#endif | ||
126 | + | ||
127 | +#endif |
请
注册
或
登录
后发表评论