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_ */