Mercurial > hg > nginx
comparison src/os/win32/ngx_socket.h @ 1633:74b2a52bc3c9
TransmitPackets(), ConnectEx(), and DisconnectEx()
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Sun, 11 Nov 2007 18:56:50 +0000 |
parents | d4ea69372b94 |
children | ca317d9b5c09 |
comparison
equal
deleted
inserted
replaced
1632:2142e5cf62da | 1633:74b2a52bc3c9 |
---|---|
17 | 17 |
18 typedef SOCKET ngx_socket_t; | 18 typedef SOCKET ngx_socket_t; |
19 typedef int socklen_t; | 19 typedef int socklen_t; |
20 | 20 |
21 | 21 |
22 #define ngx_socket(af, type, proto) \ | 22 #define ngx_socket(af, type, proto) \ |
23 WSASocket(af, type, proto, NULL, 0, WSA_FLAG_OVERLAPPED) | 23 WSASocket(af, type, proto, NULL, 0, WSA_FLAG_OVERLAPPED) |
24 | 24 |
25 #define ngx_socket_n "WSASocket()" | 25 #define ngx_socket_n "WSASocket()" |
26 | 26 |
27 int ngx_nonblocking(ngx_socket_t s); | 27 int ngx_nonblocking(ngx_socket_t s); |
28 int ngx_blocking(ngx_socket_t s); | 28 int ngx_blocking(ngx_socket_t s); |
48 IN DWORD dwRemoteAddressLength, | 48 IN DWORD dwRemoteAddressLength, |
49 OUT LPDWORD lpdwBytesReceived, | 49 OUT LPDWORD lpdwBytesReceived, |
50 IN LPOVERLAPPED lpOverlapped | 50 IN LPOVERLAPPED lpOverlapped |
51 ); | 51 ); |
52 | 52 |
53 #define WSAID_ACCEPTEX \ | 53 #define WSAID_ACCEPTEX \ |
54 {0xb5367df1,0xcbac,0x11cf,{0x95,0xca,0x00,0x80,0x5f,0x48,0xa1,0x92}} | 54 {0xb5367df1,0xcbac,0x11cf,{0x95,0xca,0x00,0x80,0x5f,0x48,0xa1,0x92}} |
55 | 55 |
56 #endif | 56 #endif |
57 | 57 |
58 | 58 |
59 #ifndef WSAID_GETACCEPTEXSOCKADDRS | 59 #ifndef WSAID_GETACCEPTEXSOCKADDRS |
67 OUT LPINT LocalSockaddrLength, | 67 OUT LPINT LocalSockaddrLength, |
68 OUT struct sockaddr **RemoteSockaddr, | 68 OUT struct sockaddr **RemoteSockaddr, |
69 OUT LPINT RemoteSockaddrLength | 69 OUT LPINT RemoteSockaddrLength |
70 ); | 70 ); |
71 | 71 |
72 #define WSAID_GETACCEPTEXSOCKADDRS \ | 72 #define WSAID_GETACCEPTEXSOCKADDRS \ |
73 {0xb5367df2,0xcbac,0x11cf,{0x95,0xca,0x00,0x80,0x5f,0x48,0xa1,0x92}} | 73 {0xb5367df2,0xcbac,0x11cf,{0x95,0xca,0x00,0x80,0x5f,0x48,0xa1,0x92}} |
74 | 74 |
75 #endif | 75 #endif |
76 | 76 |
77 | 77 |
78 #ifndef LPFN_TRANSMITFILE | 78 #ifndef WSAID_TRANSMITFILE |
79 | |
80 #ifndef TF_DISCONNECT | |
81 | |
82 #define TF_DISCONNECT 1 | |
83 #define TF_REUSE_SOCKET 2 | |
84 #define TF_WRITE_BEHIND 4 | |
85 #define TF_USE_DEFAULT_WORKER 0 | |
86 #define TF_USE_SYSTEM_THREAD 16 | |
87 #define TF_USE_KERNEL_APC 32 | |
88 | |
89 typedef struct _TRANSMIT_FILE_BUFFERS { | |
90 LPVOID Head; | |
91 DWORD HeadLength; | |
92 LPVOID Tail; | |
93 DWORD TailLength; | |
94 } TRANSMIT_FILE_BUFFERS, *PTRANSMIT_FILE_BUFFERS, FAR *LPTRANSMIT_FILE_BUFFERS; | |
95 | |
96 #endif | |
79 | 97 |
80 typedef BOOL (PASCAL FAR * LPFN_TRANSMITFILE)( | 98 typedef BOOL (PASCAL FAR * LPFN_TRANSMITFILE)( |
81 IN SOCKET hSocket, | 99 IN SOCKET hSocket, |
82 IN HANDLE hFile, | 100 IN HANDLE hFile, |
83 IN DWORD nNumberOfBytesToWrite, | 101 IN DWORD nNumberOfBytesToWrite, |
85 IN LPOVERLAPPED lpOverlapped, | 103 IN LPOVERLAPPED lpOverlapped, |
86 IN LPTRANSMIT_FILE_BUFFERS lpTransmitBuffers, | 104 IN LPTRANSMIT_FILE_BUFFERS lpTransmitBuffers, |
87 IN DWORD dwReserved | 105 IN DWORD dwReserved |
88 ); | 106 ); |
89 | 107 |
90 #define WSAID_TRANSMITFILE \ | 108 #define WSAID_TRANSMITFILE \ |
91 {0xb5367df0,0xcbac,0x11cf,{0x95,0xca,0x00,0x80,0x5f,0x48,0xa1,0x92}} | 109 {0xb5367df0,0xcbac,0x11cf,{0x95,0xca,0x00,0x80,0x5f,0x48,0xa1,0x92}} |
92 | 110 |
93 #endif | 111 #endif |
94 | 112 |
95 | 113 |
96 extern LPFN_ACCEPTEX acceptex; | 114 #ifndef WSAID_TRANSMITPACKETS |
97 extern LPFN_GETACCEPTEXSOCKADDRS getacceptexsockaddrs; | 115 |
98 extern LPFN_TRANSMITFILE transmitfile; | 116 /* OpenWatcom has a swapped TP_ELEMENT_FILE and TP_ELEMENT_MEMORY definition */ |
117 | |
118 #ifndef TP_ELEMENT_FILE | |
119 | |
120 #ifdef _MSC_VER | |
121 #pragma warning(disable:4201) /* Nonstandard extension, nameless struct/union */ | |
122 #endif | |
123 | |
124 typedef struct _TRANSMIT_PACKETS_ELEMENT { | |
125 ULONG dwElFlags; | |
126 #define TP_ELEMENT_MEMORY 1 | |
127 #define TP_ELEMENT_FILE 2 | |
128 #define TP_ELEMENT_EOP 4 | |
129 ULONG cLength; | |
130 union { | |
131 struct { | |
132 LARGE_INTEGER nFileOffset; | |
133 HANDLE hFile; | |
134 }; | |
135 PVOID pBuffer; | |
136 }; | |
137 } TRANSMIT_PACKETS_ELEMENT, *PTRANSMIT_PACKETS_ELEMENT, | |
138 FAR *LPTRANSMIT_PACKETS_ELEMENT; | |
139 | |
140 #ifdef _MSC_VER | |
141 #pragma warning(default:4201) | |
142 #endif | |
143 | |
144 #endif | |
145 | |
146 typedef BOOL (PASCAL FAR * LPFN_TRANSMITPACKETS) ( | |
147 SOCKET hSocket, | |
148 TRANSMIT_PACKETS_ELEMENT *lpPacketArray, | |
149 DWORD nElementCount, | |
150 DWORD nSendSize, | |
151 LPOVERLAPPED lpOverlapped, | |
152 DWORD dwFlags | |
153 ); | |
154 | |
155 #define WSAID_TRANSMITPACKETS \ | |
156 {0xd9689da0,0x1f90,0x11d3,{0x99,0x71,0x00,0xc0,0x4f,0x68,0xc8,0x76}} | |
157 | |
158 #endif | |
159 | |
160 | |
161 #ifndef WSAID_CONNECTEX | |
162 | |
163 typedef BOOL (PASCAL FAR * LPFN_CONNECTEX) ( | |
164 IN SOCKET s, | |
165 IN const struct sockaddr FAR *name, | |
166 IN int namelen, | |
167 IN PVOID lpSendBuffer OPTIONAL, | |
168 IN DWORD dwSendDataLength, | |
169 OUT LPDWORD lpdwBytesSent, | |
170 IN LPOVERLAPPED lpOverlapped | |
171 ); | |
172 | |
173 #define WSAID_CONNECTEX \ | |
174 {0x25a207b9,0xddf3,0x4660,{0x8e,0xe9,0x76,0xe5,0x8c,0x74,0x06,0x3e}} | |
175 | |
176 #endif | |
177 | |
178 | |
179 #ifndef WSAID_DISCONNECTEX | |
180 | |
181 typedef BOOL (PASCAL FAR * LPFN_DISCONNECTEX) ( | |
182 IN SOCKET s, | |
183 IN LPOVERLAPPED lpOverlapped, | |
184 IN DWORD dwFlags, | |
185 IN DWORD dwReserved | |
186 ); | |
187 | |
188 #define WSAID_DISCONNECTEX \ | |
189 {0x7fda2e11,0x8630,0x436f,{0xa0,0x31,0xf5,0x36,0xa6,0xee,0xc1,0x57}} | |
190 | |
191 #endif | |
192 | |
193 | |
194 extern LPFN_ACCEPTEX ngx_acceptex; | |
195 extern LPFN_GETACCEPTEXSOCKADDRS ngx_getacceptexsockaddrs; | |
196 extern LPFN_TRANSMITFILE ngx_transmitfile; | |
197 extern LPFN_TRANSMITPACKETS ngx_transmitpackets; | |
198 extern LPFN_CONNECTEX ngx_connectex; | |
199 extern LPFN_DISCONNECTEX ngx_disconnectex; | |
99 | 200 |
100 | 201 |
101 int ngx_tcp_push(ngx_socket_t s); | 202 int ngx_tcp_push(ngx_socket_t s); |
102 #define ngx_tcp_push_n "tcp_push()" | 203 #define ngx_tcp_push_n "tcp_push()" |
103 | 204 |
104 | 205 |
105 #endif /* _NGX_SOCKET_H_INCLUDED_ */ | 206 #endif /* _NGX_SOCKET_H_INCLUDED_ */ |