Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(56)

Side by Side Diff: third_party/twisted_8_1/twisted/internet/iocpreactor/iocpsupport/iocpsupport.c

Issue 12261012: Remove third_party/twisted_8_1 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 /* Generated by Pyrex 0.9.6.4 on Tue Mar 18 10:18:51 2008 */
2
3 #define PY_SSIZE_T_CLEAN
4 #include "Python.h"
5 #include "structmember.h"
6 #ifndef PY_LONG_LONG
7 #define PY_LONG_LONG LONG_LONG
8 #endif
9 #if PY_VERSION_HEX < 0x02050000
10 typedef int Py_ssize_t;
11 #define PY_SSIZE_T_MAX INT_MAX
12 #define PY_SSIZE_T_MIN INT_MIN
13 #define PyInt_FromSsize_t(z) PyInt_FromLong(z)
14 #define PyInt_AsSsize_t(o) PyInt_AsLong(o)
15 #endif
16 #ifndef WIN32
17 #ifndef __stdcall
18 #define __stdcall
19 #endif
20 #ifndef __cdecl
21 #define __cdecl
22 #endif
23 #endif
24 #ifdef __cplusplus
25 #define __PYX_EXTERN_C extern "C"
26 #else
27 #define __PYX_EXTERN_C extern
28 #endif
29 #include <math.h>
30 #include "io.h"
31 #include "errno.h"
32 #include "winsock2.h"
33 #include "windows.h"
34 #include "python.h"
35 #include "string.h"
36 #include "winsock_pointers.h"
37
38
39 typedef struct {PyObject **p; char *s;} __Pyx_InternTabEntry; /*proto*/
40 typedef struct {PyObject **p; char *s; long n;} __Pyx_StringTabEntry; /*proto*/
41
42 static PyObject *__pyx_m;
43 static PyObject *__pyx_b;
44 static int __pyx_lineno;
45 static char *__pyx_filename;
46 static char **__pyx_f;
47
48 static PyObject *__Pyx_CreateClass(PyObject *bases, PyObject *dict, PyObject *na me, char *modname); /*proto*/
49
50 static int __Pyx_GetStarArgs(PyObject **args, PyObject **kwds, char *kwd_list[], Py_ssize_t nargs, PyObject **args2, PyObject **kwds2, char rqd_kwds[]); /*p roto*/
51
52 static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list); /*proto*/
53
54 static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name); /*proto*/
55
56 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb); /*proto* /
57
58 static PyObject *__Pyx_UnpackItem(PyObject *); /*proto*/
59 static int __Pyx_EndUnpack(PyObject *); /*proto*/
60
61 static int __Pyx_InternStrings(__Pyx_InternTabEntry *t); /*proto*/
62
63 static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/
64
65 static void __Pyx_AddTraceback(char *funcname); /*proto*/
66
67 /* Declarations from iocpsupport */
68
69 typedef int __pyx_t_11iocpsupport_size_t;
70
71 typedef unsigned long __pyx_t_11iocpsupport_HANDLE;
72
73 typedef unsigned long __pyx_t_11iocpsupport_SOCKET;
74
75 typedef unsigned long __pyx_t_11iocpsupport_DWORD;
76
77 typedef unsigned long __pyx_t_11iocpsupport_ULONG_PTR;
78
79 typedef int __pyx_t_11iocpsupport_BOOL;
80
81 struct __pyx_t_11iocpsupport_myOVERLAPPED {
82 OVERLAPPED ov;
83 struct PyObject *obj;
84 };
85
86 struct __pyx_obj_11iocpsupport_CompletionPort {
87 PyObject_HEAD
88 __pyx_t_11iocpsupport_HANDLE port;
89 };
90
91
92 static PyTypeObject *__pyx_ptype_11iocpsupport_CompletionPort = 0;
93 static long __pyx_k2;
94 static unsigned long __pyx_k5;
95 static unsigned long __pyx_k6;
96 static unsigned long __pyx_k7;
97 static struct __pyx_t_11iocpsupport_myOVERLAPPED *__pyx_f_11iocpsupport_makeOV(v oid); /*proto*/
98 static void __pyx_f_11iocpsupport_raise_error(int,PyObject *); /*proto*/
99 static PyObject *__pyx_f_11iocpsupport__makesockaddr(struct sockaddr *,int); /*p roto*/
100 static PyObject *__pyx_f_11iocpsupport_fillinetaddr(struct sockaddr_in *,PyObjec t *); /*proto*/
101 static int __pyx_f_11iocpsupport_getAddrFamily(__pyx_t_11iocpsupport_SOCKET); /* proto*/
102
103
104 /* Implementation of iocpsupport */
105
106 static char __pyx_k4[] = "Failed to initialize Winsock function vectors";
107
108 static PyObject *__pyx_n_Event;
109 static PyObject *__pyx_n___init__;
110 static PyObject *__pyx_n_socket;
111 static PyObject *__pyx_n_ValueError;
112 static PyObject *__pyx_n_have_connectex;
113
114 static PyObject *__pyx_k4p;
115
116 static PyObject *__pyx_n_MemoryError;
117
118 static struct __pyx_t_11iocpsupport_myOVERLAPPED *__pyx_f_11iocpsupport_makeOV(v oid) {
119 struct __pyx_t_11iocpsupport_myOVERLAPPED *__pyx_v_res;
120 struct __pyx_t_11iocpsupport_myOVERLAPPED *__pyx_r;
121 void *__pyx_1;
122 int __pyx_2;
123 PyObject *__pyx_3 = 0;
124
125 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocpsup port.pyx":110 */
126 __pyx_1 = PyMem_Malloc((sizeof(struct __pyx_t_11iocpsupport_myOVERLAPPED))); i f (__pyx_1 == NULL) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; goto __pyx _L1;}
127 __pyx_v_res = ((struct __pyx_t_11iocpsupport_myOVERLAPPED *)__pyx_1);
128
129 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocpsup port.pyx":111 */
130 __pyx_2 = (!(__pyx_v_res != 0));
131 if (__pyx_2) {
132 __pyx_3 = __Pyx_GetName(__pyx_b, __pyx_n_MemoryError); if (!__pyx_3) {__pyx_ filename = __pyx_f[0]; __pyx_lineno = 112; goto __pyx_L1;}
133 __Pyx_Raise(__pyx_3, 0, 0);
134 Py_DECREF(__pyx_3); __pyx_3 = 0;
135 {__pyx_filename = __pyx_f[0]; __pyx_lineno = 112; goto __pyx_L1;}
136 goto __pyx_L2;
137 }
138 __pyx_L2:;
139
140 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocpsup port.pyx":113 */
141 memset(__pyx_v_res,0,(sizeof(struct __pyx_t_11iocpsupport_myOVERLAPPED)));
142
143 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocpsup port.pyx":114 */
144 __pyx_r = __pyx_v_res;
145 goto __pyx_L0;
146
147 __pyx_r = 0;
148 goto __pyx_L0;
149 __pyx_L1:;
150 Py_XDECREF(__pyx_3);
151 __Pyx_AddTraceback("iocpsupport.makeOV");
152 __pyx_r = NULL;
153 __pyx_L0:;
154 return __pyx_r;
155 }
156
157 static PyObject *__pyx_n_WindowsError;
158
159 static void __pyx_f_11iocpsupport_raise_error(int __pyx_v_err,PyObject *__pyx_v_ message) {
160 int __pyx_1;
161 PyObject *__pyx_2 = 0;
162 PyObject *__pyx_3 = 0;
163 PyObject *__pyx_4 = 0;
164 Py_INCREF(__pyx_v_message);
165
166 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocpsup port.pyx":117 */
167 __pyx_1 = (!__pyx_v_err);
168 if (__pyx_1) {
169 __pyx_v_err = GetLastError();
170 goto __pyx_L2;
171 }
172 __pyx_L2:;
173
174 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocpsup port.pyx":119 */
175 __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_WindowsError); if (!__pyx_2) {__pyx_f ilename = __pyx_f[0]; __pyx_lineno = 119; goto __pyx_L1;}
176 __pyx_3 = PyInt_FromLong(__pyx_v_err); if (!__pyx_3) {__pyx_filename = __pyx_f [0]; __pyx_lineno = 119; goto __pyx_L1;}
177 __pyx_4 = PyTuple_New(2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_li neno = 119; goto __pyx_L1;}
178 Py_INCREF(__pyx_v_message);
179 PyTuple_SET_ITEM(__pyx_4, 0, __pyx_v_message);
180 PyTuple_SET_ITEM(__pyx_4, 1, __pyx_3);
181 __pyx_3 = 0;
182 __pyx_3 = PyObject_CallObject(__pyx_2, __pyx_4); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; goto __pyx_L1;}
183 Py_DECREF(__pyx_2); __pyx_2 = 0;
184 Py_DECREF(__pyx_4); __pyx_4 = 0;
185 __Pyx_Raise(__pyx_3, 0, 0);
186 Py_DECREF(__pyx_3); __pyx_3 = 0;
187 {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; goto __pyx_L1;}
188
189 goto __pyx_L0;
190 __pyx_L1:;
191 Py_XDECREF(__pyx_2);
192 Py_XDECREF(__pyx_3);
193 Py_XDECREF(__pyx_4);
194 __Pyx_AddTraceback("iocpsupport.raise_error");
195 __pyx_L0:;
196 Py_DECREF(__pyx_v_message);
197 }
198
199 static PyObject *__pyx_n_callback;
200 static PyObject *__pyx_n_owner;
201 static PyObject *__pyx_n_False;
202 static PyObject *__pyx_n_ignore;
203 static PyObject *__pyx_n_items;
204
205 static PyObject *__pyx_f_11iocpsupport_5Event___init__(PyObject *__pyx_self, PyO bject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
206 static PyMethodDef __pyx_mdef_11iocpsupport_5Event___init__ = {"__init__", (PyCF unction)__pyx_f_11iocpsupport_5Event___init__, METH_VARARGS|METH_KEYWORDS, 0};
207 static PyObject *__pyx_f_11iocpsupport_5Event___init__(PyObject *__pyx_self, PyO bject *__pyx_args, PyObject *__pyx_kwds) {
208 PyObject *__pyx_v_self = 0;
209 PyObject *__pyx_v_callback = 0;
210 PyObject *__pyx_v_owner = 0;
211 PyObject *__pyx_v_kw = 0;
212 PyObject *__pyx_v_k;
213 PyObject *__pyx_v_v;
214 PyObject *__pyx_r;
215 PyObject *__pyx_1 = 0;
216 PyObject *__pyx_2 = 0;
217 PyObject *__pyx_3 = 0;
218 int __pyx_4;
219 static char *__pyx_argnames[] = {"self","callback","owner",0};
220 if (__Pyx_GetStarArgs(&__pyx_args, &__pyx_kwds, __pyx_argnames, 3, 0, &__pyx_v _kw, 0) < 0) return 0;
221 if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "OOO", __pyx_argnames , &__pyx_v_self, &__pyx_v_callback, &__pyx_v_owner)) {
222 Py_XDECREF(__pyx_args);
223 Py_XDECREF(__pyx_kwds);
224 Py_XDECREF(__pyx_v_kw);
225 return 0;
226 }
227 Py_INCREF(__pyx_v_self);
228 Py_INCREF(__pyx_v_callback);
229 Py_INCREF(__pyx_v_owner);
230 __pyx_v_k = Py_None; Py_INCREF(Py_None);
231 __pyx_v_v = Py_None; Py_INCREF(Py_None);
232
233 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocpsup port.pyx":123 */
234 if (PyObject_SetAttr(__pyx_v_self, __pyx_n_callback, __pyx_v_callback) < 0) {_ _pyx_filename = __pyx_f[0]; __pyx_lineno = 123; goto __pyx_L1;}
235
236 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocpsup port.pyx":124 */
237 if (PyObject_SetAttr(__pyx_v_self, __pyx_n_owner, __pyx_v_owner) < 0) {__pyx_f ilename = __pyx_f[0]; __pyx_lineno = 124; goto __pyx_L1;}
238
239 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocpsup port.pyx":125 */
240 __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_False); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 125; goto __pyx_L1;}
241 if (PyObject_SetAttr(__pyx_v_self, __pyx_n_ignore, __pyx_1) < 0) {__pyx_filena me = __pyx_f[0]; __pyx_lineno = 125; goto __pyx_L1;}
242 Py_DECREF(__pyx_1); __pyx_1 = 0;
243
244 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocpsup port.pyx":126 */
245 __pyx_1 = PyObject_GetAttr(__pyx_v_kw, __pyx_n_items); if (!__pyx_1) {__pyx_fi lename = __pyx_f[0]; __pyx_lineno = 126; goto __pyx_L1;}
246 __pyx_2 = PyObject_CallObject(__pyx_1, 0); if (!__pyx_2) {__pyx_filename = __p yx_f[0]; __pyx_lineno = 126; goto __pyx_L1;}
247 Py_DECREF(__pyx_1); __pyx_1 = 0;
248 __pyx_1 = PyObject_GetIter(__pyx_2); if (!__pyx_1) {__pyx_filename = __pyx_f[0 ]; __pyx_lineno = 126; goto __pyx_L1;}
249 Py_DECREF(__pyx_2); __pyx_2 = 0;
250 for (;;) {
251 __pyx_2 = PyIter_Next(__pyx_1);
252 if (!__pyx_2) {
253 if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; go to __pyx_L1;}
254 break;
255 }
256 __pyx_3 = PyObject_GetIter(__pyx_2); if (!__pyx_3) {__pyx_filename = __pyx_f [0]; __pyx_lineno = 126; goto __pyx_L1;}
257 Py_DECREF(__pyx_2); __pyx_2 = 0;
258 __pyx_2 = __Pyx_UnpackItem(__pyx_3); if (!__pyx_2) {__pyx_filename = __pyx_f [0]; __pyx_lineno = 126; goto __pyx_L1;}
259 Py_DECREF(__pyx_v_k);
260 __pyx_v_k = __pyx_2;
261 __pyx_2 = 0;
262 __pyx_2 = __Pyx_UnpackItem(__pyx_3); if (!__pyx_2) {__pyx_filename = __pyx_f [0]; __pyx_lineno = 126; goto __pyx_L1;}
263 Py_DECREF(__pyx_v_v);
264 __pyx_v_v = __pyx_2;
265 __pyx_2 = 0;
266 if (__Pyx_EndUnpack(__pyx_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; goto __pyx_L1;}
267 Py_DECREF(__pyx_3); __pyx_3 = 0;
268 __pyx_4 = PyObject_SetAttr(__pyx_v_self,__pyx_v_k,__pyx_v_v); if (__pyx_4 == -1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; goto __pyx_L1;}
269 }
270 Py_DECREF(__pyx_1); __pyx_1 = 0;
271
272 __pyx_r = Py_None; Py_INCREF(Py_None);
273 goto __pyx_L0;
274 __pyx_L1:;
275 Py_XDECREF(__pyx_1);
276 Py_XDECREF(__pyx_2);
277 Py_XDECREF(__pyx_3);
278 __Pyx_AddTraceback("iocpsupport.Event.__init__");
279 __pyx_r = 0;
280 __pyx_L0:;
281 Py_XDECREF(__pyx_v_kw);
282 Py_DECREF(__pyx_v_k);
283 Py_DECREF(__pyx_v_v);
284 Py_DECREF(__pyx_v_self);
285 Py_DECREF(__pyx_v_callback);
286 Py_DECREF(__pyx_v_owner);
287 Py_XDECREF(__pyx_args);
288 Py_XDECREF(__pyx_kwds);
289 return __pyx_r;
290 }
291
292 static PyObject *__pyx_n_CreateIoCompletionPort;
293
294
295 static int __pyx_f_11iocpsupport_14CompletionPort___init__(PyObject *__pyx_v_sel f, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
296 static int __pyx_f_11iocpsupport_14CompletionPort___init__(PyObject *__pyx_v_sel f, PyObject *__pyx_args, PyObject *__pyx_kwds) {
297 __pyx_t_11iocpsupport_HANDLE __pyx_v_res;
298 int __pyx_r;
299 int __pyx_1;
300 static char *__pyx_argnames[] = {0};
301 if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "", __pyx_argnames)) return -1;
302 Py_INCREF(__pyx_v_self);
303
304 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocpsup port.pyx":133 */
305 __pyx_v_res = CreateIoCompletionPort(INVALID_HANDLE_VALUE,0,0,0);
306
307 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocpsup port.pyx":134 */
308 __pyx_1 = (!__pyx_v_res);
309 if (__pyx_1) {
310 __pyx_f_11iocpsupport_raise_error(0,__pyx_n_CreateIoCompletionPort); if (PyE rr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; goto __pyx_L1;}
311 goto __pyx_L2;
312 }
313 __pyx_L2:;
314
315 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocpsup port.pyx":136 */
316 ((struct __pyx_obj_11iocpsupport_CompletionPort *)__pyx_v_self)->port = __pyx_ v_res;
317
318 __pyx_r = 0;
319 goto __pyx_L0;
320 __pyx_L1:;
321 __Pyx_AddTraceback("iocpsupport.CompletionPort.__init__");
322 __pyx_r = -1;
323 __pyx_L0:;
324 Py_DECREF(__pyx_v_self);
325 return __pyx_r;
326 }
327
328
329 static PyObject *__pyx_f_11iocpsupport_14CompletionPort_addHandle(PyObject *__py x_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
330 static PyObject *__pyx_f_11iocpsupport_14CompletionPort_addHandle(PyObject *__py x_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
331 long __pyx_v_handle;
332 long __pyx_v_key;
333 __pyx_t_11iocpsupport_HANDLE __pyx_v_res;
334 PyObject *__pyx_r;
335 int __pyx_1;
336 static char *__pyx_argnames[] = {"handle","key",0};
337 __pyx_v_key = __pyx_k2;
338 if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "l|l", __pyx_argnames , &__pyx_v_handle, &__pyx_v_key)) return 0;
339 Py_INCREF(__pyx_v_self);
340
341 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocpsup port.pyx":140 */
342 __pyx_v_res = CreateIoCompletionPort(__pyx_v_handle,((struct __pyx_obj_11iocps upport_CompletionPort *)__pyx_v_self)->port,__pyx_v_key,0);
343
344 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocpsup port.pyx":141 */
345 __pyx_1 = (!__pyx_v_res);
346 if (__pyx_1) {
347 __pyx_f_11iocpsupport_raise_error(0,__pyx_n_CreateIoCompletionPort); if (PyE rr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; goto __pyx_L1;}
348 goto __pyx_L2;
349 }
350 __pyx_L2:;
351
352 __pyx_r = Py_None; Py_INCREF(Py_None);
353 goto __pyx_L0;
354 __pyx_L1:;
355 __Pyx_AddTraceback("iocpsupport.CompletionPort.addHandle");
356 __pyx_r = 0;
357 __pyx_L0:;
358 Py_DECREF(__pyx_v_self);
359 return __pyx_r;
360 }
361
362 static PyObject *__pyx_f_11iocpsupport_14CompletionPort_getEvent(PyObject *__pyx _v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
363 static PyObject *__pyx_f_11iocpsupport_14CompletionPort_getEvent(PyObject *__pyx _v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
364 long __pyx_v_timeout;
365 struct PyThreadState *__pyx_v__save;
366 unsigned long __pyx_v_bytes;
367 unsigned long __pyx_v_key;
368 unsigned long __pyx_v_rc;
369 struct __pyx_t_11iocpsupport_myOVERLAPPED *__pyx_v_ov;
370 PyObject *__pyx_v_obj;
371 PyObject *__pyx_r;
372 int __pyx_1;
373 PyObject *__pyx_2 = 0;
374 PyObject *__pyx_3 = 0;
375 PyObject *__pyx_4 = 0;
376 PyObject *__pyx_5 = 0;
377 static char *__pyx_argnames[] = {"timeout",0};
378 if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "l", __pyx_argnames, &__pyx_v_timeout)) return 0;
379 Py_INCREF(__pyx_v_self);
380 __pyx_v_obj = Py_None; Py_INCREF(Py_None);
381
382 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocpsup port.pyx":149 */
383 __pyx_v__save = PyEval_SaveThread();
384
385 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocpsup port.pyx":150 */
386 __pyx_v_rc = GetQueuedCompletionStatus(((struct __pyx_obj_11iocpsupport_Comple tionPort *)__pyx_v_self)->port,(&__pyx_v_bytes),(&__pyx_v_key),((OVERLAPPED **)( &__pyx_v_ov)),__pyx_v_timeout);
387
388 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocpsup port.pyx":151 */
389 PyEval_RestoreThread(__pyx_v__save);
390
391 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocpsup port.pyx":153 */
392 __pyx_1 = (!__pyx_v_rc);
393 if (__pyx_1) {
394 __pyx_v_rc = GetLastError();
395 goto __pyx_L2;
396 }
397 /*else*/ {
398 __pyx_v_rc = 0;
399 }
400 __pyx_L2:;
401
402 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocpsup port.pyx":158 */
403 Py_INCREF(Py_None);
404 Py_DECREF(__pyx_v_obj);
405 __pyx_v_obj = Py_None;
406
407 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocpsup port.pyx":159 */
408 __pyx_1 = (__pyx_v_ov != 0);
409 if (__pyx_1) {
410
411 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocps upport.pyx":160 */
412 __pyx_1 = (__pyx_v_ov->obj != 0);
413 if (__pyx_1) {
414
415 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/ioc psupport.pyx":161 */
416 __pyx_2 = (PyObject *)__pyx_v_ov->obj;
417 Py_INCREF(__pyx_2);
418 Py_DECREF(__pyx_v_obj);
419 __pyx_v_obj = __pyx_2;
420 __pyx_2 = 0;
421
422 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/ioc psupport.pyx":162 */
423 Py_DECREF(__pyx_v_obj);
424 goto __pyx_L4;
425 }
426 __pyx_L4:;
427
428 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocps upport.pyx":163 */
429 PyMem_Free(__pyx_v_ov);
430 goto __pyx_L3;
431 }
432 __pyx_L3:;
433
434 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocpsup port.pyx":165 */
435 __pyx_2 = PyLong_FromUnsignedLong(__pyx_v_rc); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; goto __pyx_L1;}
436 __pyx_3 = PyLong_FromUnsignedLong(__pyx_v_bytes); if (!__pyx_3) {__pyx_filenam e = __pyx_f[0]; __pyx_lineno = 165; goto __pyx_L1;}
437 __pyx_4 = PyLong_FromUnsignedLong(__pyx_v_key); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; goto __pyx_L1;}
438 __pyx_5 = PyTuple_New(4); if (!__pyx_5) {__pyx_filename = __pyx_f[0]; __pyx_li neno = 165; goto __pyx_L1;}
439 PyTuple_SET_ITEM(__pyx_5, 0, __pyx_2);
440 PyTuple_SET_ITEM(__pyx_5, 1, __pyx_3);
441 PyTuple_SET_ITEM(__pyx_5, 2, __pyx_4);
442 Py_INCREF(__pyx_v_obj);
443 PyTuple_SET_ITEM(__pyx_5, 3, __pyx_v_obj);
444 __pyx_2 = 0;
445 __pyx_3 = 0;
446 __pyx_4 = 0;
447 __pyx_r = __pyx_5;
448 __pyx_5 = 0;
449 goto __pyx_L0;
450
451 __pyx_r = Py_None; Py_INCREF(Py_None);
452 goto __pyx_L0;
453 __pyx_L1:;
454 Py_XDECREF(__pyx_2);
455 Py_XDECREF(__pyx_3);
456 Py_XDECREF(__pyx_4);
457 Py_XDECREF(__pyx_5);
458 __Pyx_AddTraceback("iocpsupport.CompletionPort.getEvent");
459 __pyx_r = 0;
460 __pyx_L0:;
461 Py_DECREF(__pyx_v_obj);
462 Py_DECREF(__pyx_v_self);
463 return __pyx_r;
464 }
465
466 static PyObject *__pyx_n_PostQueuedCompletionStatus;
467
468
469 static PyObject *__pyx_f_11iocpsupport_14CompletionPort_postEvent(PyObject *__py x_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
470 static PyObject *__pyx_f_11iocpsupport_14CompletionPort_postEvent(PyObject *__py x_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
471 unsigned long __pyx_v_bytes;
472 unsigned long __pyx_v_key;
473 PyObject *__pyx_v_obj = 0;
474 struct __pyx_t_11iocpsupport_myOVERLAPPED *__pyx_v_ov;
475 unsigned long __pyx_v_rc;
476 PyObject *__pyx_r;
477 int __pyx_1;
478 struct __pyx_t_11iocpsupport_myOVERLAPPED *__pyx_2;
479 static char *__pyx_argnames[] = {"bytes","key","obj",0};
480 if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "kkO", __pyx_argnames , &__pyx_v_bytes, &__pyx_v_key, &__pyx_v_obj)) return 0;
481 Py_INCREF(__pyx_v_self);
482 Py_INCREF(__pyx_v_obj);
483
484 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocpsup port.pyx":171 */
485 __pyx_1 = __pyx_v_obj != Py_None;
486 if (__pyx_1) {
487
488 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocps upport.pyx":172 */
489 __pyx_2 = __pyx_f_11iocpsupport_makeOV(); if (__pyx_2 == NULL) {__pyx_filena me = __pyx_f[0]; __pyx_lineno = 172; goto __pyx_L1;}
490 __pyx_v_ov = __pyx_2;
491
492 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocps upport.pyx":173 */
493 Py_INCREF(__pyx_v_obj);
494
495 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocps upport.pyx":174 */
496 __pyx_v_ov->obj = ((struct PyObject *)__pyx_v_obj);
497 goto __pyx_L2;
498 }
499 /*else*/ {
500 __pyx_v_ov = NULL;
501 }
502 __pyx_L2:;
503
504 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocpsup port.pyx":178 */
505 __pyx_v_rc = PostQueuedCompletionStatus(((struct __pyx_obj_11iocpsupport_Compl etionPort *)__pyx_v_self)->port,__pyx_v_bytes,__pyx_v_key,((OVERLAPPED *)__pyx_v _ov));
506
507 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocpsup port.pyx":179 */
508 __pyx_1 = (!__pyx_v_rc);
509 if (__pyx_1) {
510 __pyx_f_11iocpsupport_raise_error(0,__pyx_n_PostQueuedCompletionStatus); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 180; goto __pyx_ L1;}
511 goto __pyx_L3;
512 }
513 __pyx_L3:;
514
515 __pyx_r = Py_None; Py_INCREF(Py_None);
516 goto __pyx_L0;
517 __pyx_L1:;
518 __Pyx_AddTraceback("iocpsupport.CompletionPort.postEvent");
519 __pyx_r = 0;
520 __pyx_L0:;
521 Py_DECREF(__pyx_v_self);
522 Py_DECREF(__pyx_v_obj);
523 return __pyx_r;
524 }
525
526 static PyObject *__pyx_f_11iocpsupport_14CompletionPort___del__(PyObject *__pyx_ v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
527 static PyObject *__pyx_f_11iocpsupport_14CompletionPort___del__(PyObject *__pyx_ v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
528 PyObject *__pyx_r;
529 static char *__pyx_argnames[] = {0};
530 if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "", __pyx_argnames)) return 0;
531 Py_INCREF(__pyx_v_self);
532 CloseHandle(((struct __pyx_obj_11iocpsupport_CompletionPort *)__pyx_v_self)->p ort);
533
534 __pyx_r = Py_None; Py_INCREF(Py_None);
535 Py_DECREF(__pyx_v_self);
536 return __pyx_r;
537 }
538
539 static PyObject *__pyx_f_11iocpsupport_makesockaddr(PyObject *__pyx_self, PyObje ct *__pyx_args, PyObject *__pyx_kwds); /*proto*/
540 static PyObject *__pyx_f_11iocpsupport_makesockaddr(PyObject *__pyx_self, PyObje ct *__pyx_args, PyObject *__pyx_kwds) {
541 PyObject *__pyx_v_buff = 0;
542 void *__pyx_v_mem_buffer;
543 int __pyx_v_size;
544 PyObject *__pyx_r;
545 int __pyx_1;
546 PyObject *__pyx_2 = 0;
547 static char *__pyx_argnames[] = {"buff",0};
548 if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "O", __pyx_argnames, &__pyx_v_buff)) return 0;
549 Py_INCREF(__pyx_v_buff);
550
551 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocpsup port.pyx":189 */
552 __pyx_1 = PyObject_AsReadBuffer(__pyx_v_buff,(&__pyx_v_mem_buffer),(&__pyx_v_s ize)); if (__pyx_1 == (-1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 189; go to __pyx_L1;}
553
554 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocpsup port.pyx":191 */
555 __pyx_2 = __pyx_f_11iocpsupport__makesockaddr(((struct sockaddr *)__pyx_v_mem_ buffer),__pyx_v_size); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 191; goto __pyx_L1;}
556 __pyx_r = __pyx_2;
557 __pyx_2 = 0;
558 goto __pyx_L0;
559
560 __pyx_r = Py_None; Py_INCREF(Py_None);
561 goto __pyx_L0;
562 __pyx_L1:;
563 Py_XDECREF(__pyx_2);
564 __Pyx_AddTraceback("iocpsupport.makesockaddr");
565 __pyx_r = 0;
566 __pyx_L0:;
567 Py_DECREF(__pyx_v_buff);
568 return __pyx_r;
569 }
570
571 static PyObject *__pyx_f_11iocpsupport__makesockaddr(struct sockaddr *__pyx_v_ad dr,int __pyx_v_len) {
572 struct sockaddr_in *__pyx_v_sin;
573 PyObject *__pyx_r;
574 int __pyx_1;
575 PyObject *__pyx_2 = 0;
576 PyObject *__pyx_3 = 0;
577 PyObject *__pyx_4 = 0;
578
579 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocpsup port.pyx":195 */
580 __pyx_1 = (!__pyx_v_len);
581 if (__pyx_1) {
582 Py_INCREF(Py_None);
583 __pyx_r = Py_None;
584 goto __pyx_L0;
585 goto __pyx_L2;
586 }
587 __pyx_L2:;
588
589 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocpsup port.pyx":197 */
590 __pyx_1 = (__pyx_v_addr->sa_family == AF_INET);
591 if (__pyx_1) {
592
593 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocps upport.pyx":198 */
594 __pyx_v_sin = ((struct sockaddr_in *)__pyx_v_addr);
595
596 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocps upport.pyx":199 */
597 __pyx_2 = PyString_FromString(inet_ntoa(__pyx_v_sin->sin_addr)); if (!__pyx_ 2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 199; goto __pyx_L1;}
598 __pyx_3 = PyInt_FromLong(ntohs(__pyx_v_sin->sin_port)); if (!__pyx_3) {__pyx _filename = __pyx_f[0]; __pyx_lineno = 199; goto __pyx_L1;}
599 __pyx_4 = PyTuple_New(2); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_ lineno = 199; goto __pyx_L1;}
600 PyTuple_SET_ITEM(__pyx_4, 0, __pyx_2);
601 PyTuple_SET_ITEM(__pyx_4, 1, __pyx_3);
602 __pyx_2 = 0;
603 __pyx_3 = 0;
604 __pyx_r = __pyx_4;
605 __pyx_4 = 0;
606 goto __pyx_L0;
607 goto __pyx_L3;
608 }
609 /*else*/ {
610 __pyx_2 = PyString_FromStringAndSize(__pyx_v_addr->sa_data,(sizeof(__pyx_v_a ddr->sa_data))); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; goto __pyx_L1;}
611 __pyx_r = __pyx_2;
612 __pyx_2 = 0;
613 goto __pyx_L0;
614 }
615 __pyx_L3:;
616
617 __pyx_r = Py_None; Py_INCREF(Py_None);
618 goto __pyx_L0;
619 __pyx_L1:;
620 Py_XDECREF(__pyx_2);
621 Py_XDECREF(__pyx_3);
622 Py_XDECREF(__pyx_4);
623 __Pyx_AddTraceback("iocpsupport._makesockaddr");
624 __pyx_r = 0;
625 __pyx_L0:;
626 return __pyx_r;
627 }
628
629 static PyObject *__pyx_k11p;
630
631 static char __pyx_k11[] = "invalid IP address";
632
633 static PyObject *__pyx_f_11iocpsupport_fillinetaddr(struct sockaddr_in *__pyx_v_ dest,PyObject *__pyx_v_addr) {
634 short __pyx_v_port;
635 unsigned long __pyx_v_res;
636 char *__pyx_v_hoststr;
637 PyObject *__pyx_v_host;
638 PyObject *__pyx_r;
639 PyObject *__pyx_1 = 0;
640 PyObject *__pyx_2 = 0;
641 short __pyx_3;
642 char *__pyx_4;
643 int __pyx_5;
644 Py_INCREF(__pyx_v_addr);
645 __pyx_v_host = Py_None; Py_INCREF(Py_None);
646
647 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocpsup port.pyx":207 */
648 __pyx_1 = PyObject_GetIter(__pyx_v_addr); if (!__pyx_1) {__pyx_filename = __py x_f[0]; __pyx_lineno = 207; goto __pyx_L1;}
649 __pyx_2 = __Pyx_UnpackItem(__pyx_1); if (!__pyx_2) {__pyx_filename = __pyx_f[0 ]; __pyx_lineno = 207; goto __pyx_L1;}
650 Py_DECREF(__pyx_v_host);
651 __pyx_v_host = __pyx_2;
652 __pyx_2 = 0;
653 __pyx_2 = __Pyx_UnpackItem(__pyx_1); if (!__pyx_2) {__pyx_filename = __pyx_f[0 ]; __pyx_lineno = 207; goto __pyx_L1;}
654 __pyx_3 = PyInt_AsLong(__pyx_2); if (PyErr_Occurred()) {__pyx_filename = __pyx _f[0]; __pyx_lineno = 207; goto __pyx_L1;}
655 Py_DECREF(__pyx_2); __pyx_2 = 0;
656 __pyx_v_port = __pyx_3;
657 if (__Pyx_EndUnpack(__pyx_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 207; goto __pyx_L1;}
658 Py_DECREF(__pyx_1); __pyx_1 = 0;
659
660 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocpsup port.pyx":209 */
661 __pyx_4 = PyString_AsString(__pyx_v_host); if (__pyx_4 == NULL) {__pyx_filenam e = __pyx_f[0]; __pyx_lineno = 209; goto __pyx_L1;}
662 __pyx_v_hoststr = __pyx_4;
663
664 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocpsup port.pyx":210 */
665 __pyx_v_res = inet_addr(__pyx_v_hoststr);
666
667 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocpsup port.pyx":211 */
668 __pyx_5 = (__pyx_v_res == INADDR_ANY);
669 if (__pyx_5) {
670 __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_2) {__pyx_f ilename = __pyx_f[0]; __pyx_lineno = 212; goto __pyx_L1;}
671 __Pyx_Raise(__pyx_2, __pyx_k11p, 0);
672 Py_DECREF(__pyx_2); __pyx_2 = 0;
673 {__pyx_filename = __pyx_f[0]; __pyx_lineno = 212; goto __pyx_L1;}
674 goto __pyx_L2;
675 }
676 __pyx_L2:;
677
678 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocpsup port.pyx":213 */
679 __pyx_v_dest->sin_addr.s_addr = __pyx_v_res;
680
681 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocpsup port.pyx":215 */
682 __pyx_v_dest->sin_port = htons(__pyx_v_port);
683
684 __pyx_r = Py_None; Py_INCREF(Py_None);
685 goto __pyx_L0;
686 __pyx_L1:;
687 Py_XDECREF(__pyx_1);
688 Py_XDECREF(__pyx_2);
689 __Pyx_AddTraceback("iocpsupport.fillinetaddr");
690 __pyx_r = 0;
691 __pyx_L0:;
692 Py_DECREF(__pyx_v_host);
693 Py_DECREF(__pyx_v_addr);
694 return __pyx_r;
695 }
696
697 static PyObject *__pyx_f_11iocpsupport_AllocateReadBuffer(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
698 static PyObject *__pyx_f_11iocpsupport_AllocateReadBuffer(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
699 int __pyx_v_size;
700 PyObject *__pyx_r;
701 PyObject *__pyx_1 = 0;
702 static char *__pyx_argnames[] = {"size",0};
703 if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "i", __pyx_argnames, &__pyx_v_size)) return 0;
704 __pyx_1 = PyBuffer_New(__pyx_v_size); if (!__pyx_1) {__pyx_filename = __pyx_f[ 0]; __pyx_lineno = 218; goto __pyx_L1;}
705 __pyx_r = __pyx_1;
706 __pyx_1 = 0;
707 goto __pyx_L0;
708
709 __pyx_r = Py_None; Py_INCREF(Py_None);
710 goto __pyx_L0;
711 __pyx_L1:;
712 Py_XDECREF(__pyx_1);
713 __Pyx_AddTraceback("iocpsupport.AllocateReadBuffer");
714 __pyx_r = 0;
715 __pyx_L0:;
716 return __pyx_r;
717 }
718
719 static PyObject *__pyx_n_getsockopt;
720
721
722 static PyObject *__pyx_f_11iocpsupport_maxAddrLen(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
723 static PyObject *__pyx_f_11iocpsupport_maxAddrLen(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
724 long __pyx_v_s;
725 WSAPROTOCOL_INFO __pyx_v_wsa_pi;
726 int __pyx_v_size;
727 int __pyx_v_rc;
728 PyObject *__pyx_r;
729 int __pyx_1;
730 PyObject *__pyx_2 = 0;
731 static char *__pyx_argnames[] = {"s",0};
732 if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "l", __pyx_argnames, &__pyx_v_s)) return 0;
733
734 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocpsup port.pyx":224 */
735 __pyx_v_size = (sizeof(__pyx_v_wsa_pi));
736
737 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocpsup port.pyx":225 */
738 __pyx_v_rc = getsockopt(__pyx_v_s,SOL_SOCKET,SO_PROTOCOL_INFO,((char *)(&__pyx _v_wsa_pi)),(&__pyx_v_size));
739
740 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocpsup port.pyx":226 */
741 __pyx_1 = (__pyx_v_rc == SOCKET_ERROR);
742 if (__pyx_1) {
743 __pyx_f_11iocpsupport_raise_error(WSAGetLastError(),__pyx_n_getsockopt); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 227; goto __pyx_ L1;}
744 goto __pyx_L2;
745 }
746 __pyx_L2:;
747
748 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocpsup port.pyx":228 */
749 __pyx_2 = PyInt_FromLong(__pyx_v_wsa_pi.iMaxSockAddr); if (!__pyx_2) {__pyx_fi lename = __pyx_f[0]; __pyx_lineno = 228; goto __pyx_L1;}
750 __pyx_r = __pyx_2;
751 __pyx_2 = 0;
752 goto __pyx_L0;
753
754 __pyx_r = Py_None; Py_INCREF(Py_None);
755 goto __pyx_L0;
756 __pyx_L1:;
757 Py_XDECREF(__pyx_2);
758 __Pyx_AddTraceback("iocpsupport.maxAddrLen");
759 __pyx_r = 0;
760 __pyx_L0:;
761 return __pyx_r;
762 }
763
764
765 static int __pyx_f_11iocpsupport_getAddrFamily(__pyx_t_11iocpsupport_SOCKET __py x_v_s) {
766 WSAPROTOCOL_INFO __pyx_v_wsa_pi;
767 int __pyx_v_size;
768 int __pyx_v_rc;
769 int __pyx_r;
770 int __pyx_1;
771
772 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocpsup port.pyx":234 */
773 __pyx_v_size = (sizeof(__pyx_v_wsa_pi));
774
775 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocpsup port.pyx":235 */
776 __pyx_v_rc = getsockopt(__pyx_v_s,SOL_SOCKET,SO_PROTOCOL_INFO,((char *)(&__pyx _v_wsa_pi)),(&__pyx_v_size));
777
778 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocpsup port.pyx":236 */
779 __pyx_1 = (__pyx_v_rc == SOCKET_ERROR);
780 if (__pyx_1) {
781 __pyx_f_11iocpsupport_raise_error(WSAGetLastError(),__pyx_n_getsockopt); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 237; goto __pyx_ L1;}
782 goto __pyx_L2;
783 }
784 __pyx_L2:;
785
786 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocpsup port.pyx":238 */
787 __pyx_r = __pyx_v_wsa_pi.iAddressFamily;
788 goto __pyx_L0;
789
790 __pyx_r = 0;
791 goto __pyx_L0;
792 __pyx_L1:;
793 __Pyx_AddTraceback("iocpsupport.getAddrFamily");
794 __pyx_L0:;
795 return __pyx_r;
796 }
797
798 static PyObject *__pyx_f_11iocpsupport_accept(PyObject *__pyx_self, PyObject *__ pyx_args, PyObject *__pyx_kwds); /*proto*/
799 static PyObject *__pyx_f_11iocpsupport_accept(PyObject *__pyx_self, PyObject *__ pyx_args, PyObject *__pyx_kwds) {
800 long __pyx_v_listening;
801 long __pyx_v_accepting;
802 PyObject *__pyx_v_buff = 0;
803 PyObject *__pyx_v_obj = 0;
804 unsigned long __pyx_v_bytes;
805 int __pyx_v_size;
806 int __pyx_v_rc;
807 void *__pyx_v_mem_buffer;
808 struct __pyx_t_11iocpsupport_myOVERLAPPED *__pyx_v_ov;
809 PyObject *__pyx_r;
810 int __pyx_1;
811 struct __pyx_t_11iocpsupport_myOVERLAPPED *__pyx_2;
812 PyObject *__pyx_3 = 0;
813 static char *__pyx_argnames[] = {"listening","accepting","buff","obj",0};
814 if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "llOO", __pyx_argname s, &__pyx_v_listening, &__pyx_v_accepting, &__pyx_v_buff, &__pyx_v_obj)) return 0;
815 Py_INCREF(__pyx_v_buff);
816 Py_INCREF(__pyx_v_obj);
817
818 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\accepte x.pxi":11 */
819 __pyx_1 = PyObject_AsWriteBuffer(__pyx_v_buff,(&__pyx_v_mem_buffer),(&__pyx_v_ size)); if (__pyx_1 == (-1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 11; go to __pyx_L1;}
820
821 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\accepte x.pxi":13 */
822 __pyx_2 = __pyx_f_11iocpsupport_makeOV(); if (__pyx_2 == NULL) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 13; goto __pyx_L1;}
823 __pyx_v_ov = __pyx_2;
824
825 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\accepte x.pxi":14 */
826 __pyx_1 = __pyx_v_obj != Py_None;
827 if (__pyx_1) {
828 __pyx_v_ov->obj = ((struct PyObject *)__pyx_v_obj);
829 goto __pyx_L2;
830 }
831 __pyx_L2:;
832
833 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\accepte x.pxi":17 */
834 __pyx_v_rc = lpAcceptEx(__pyx_v_listening,__pyx_v_accepting,__pyx_v_mem_buffer ,0,(__pyx_v_size / 2),(__pyx_v_size / 2),(&__pyx_v_bytes),((OVERLAPPED *)__pyx_v _ov));
835
836 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\accepte x.pxi":19 */
837 __pyx_1 = (!__pyx_v_rc);
838 if (__pyx_1) {
839
840 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\accep tex.pxi":20 */
841 __pyx_v_rc = WSAGetLastError();
842
843 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\accep tex.pxi":21 */
844 __pyx_1 = (__pyx_v_rc != ERROR_IO_PENDING);
845 if (__pyx_1) {
846 __pyx_3 = PyInt_FromLong(__pyx_v_rc); if (!__pyx_3) {__pyx_filename = __py x_f[1]; __pyx_lineno = 22; goto __pyx_L1;}
847 __pyx_r = __pyx_3;
848 __pyx_3 = 0;
849 goto __pyx_L0;
850 goto __pyx_L4;
851 }
852 __pyx_L4:;
853 goto __pyx_L3;
854 }
855 __pyx_L3:;
856
857 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\accepte x.pxi":25 */
858 Py_XINCREF(__pyx_v_obj);
859
860 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\accepte x.pxi":26 */
861 __pyx_3 = PyInt_FromLong(__pyx_v_rc); if (!__pyx_3) {__pyx_filename = __pyx_f[ 1]; __pyx_lineno = 26; goto __pyx_L1;}
862 __pyx_r = __pyx_3;
863 __pyx_3 = 0;
864 goto __pyx_L0;
865
866 __pyx_r = Py_None; Py_INCREF(Py_None);
867 goto __pyx_L0;
868 __pyx_L1:;
869 Py_XDECREF(__pyx_3);
870 __Pyx_AddTraceback("iocpsupport.accept");
871 __pyx_r = 0;
872 __pyx_L0:;
873 Py_DECREF(__pyx_v_buff);
874 Py_DECREF(__pyx_v_obj);
875 return __pyx_r;
876 }
877
878 static PyObject *__pyx_f_11iocpsupport_get_accept_addrs(PyObject *__pyx_self, Py Object *__pyx_args, PyObject *__pyx_kwds); /*proto*/
879 static PyObject *__pyx_f_11iocpsupport_get_accept_addrs(PyObject *__pyx_self, Py Object *__pyx_args, PyObject *__pyx_kwds) {
880 long __pyx_v_s;
881 PyObject *__pyx_v_buff = 0;
882 int __pyx_v_size;
883 int __pyx_v_locallen;
884 int __pyx_v_remotelen;
885 void *__pyx_v_mem_buffer;
886 struct sockaddr *__pyx_v_localaddr;
887 struct sockaddr *__pyx_v_remoteaddr;
888 PyObject *__pyx_r;
889 int __pyx_1;
890 PyObject *__pyx_2 = 0;
891 PyObject *__pyx_3 = 0;
892 PyObject *__pyx_4 = 0;
893 PyObject *__pyx_5 = 0;
894 static char *__pyx_argnames[] = {"s","buff",0};
895 if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "lO", __pyx_argnames, &__pyx_v_s, &__pyx_v_buff)) return 0;
896 Py_INCREF(__pyx_v_buff);
897
898 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\accepte x.pxi":34 */
899 __pyx_1 = PyObject_AsReadBuffer(__pyx_v_buff,(&__pyx_v_mem_buffer),(&__pyx_v_s ize)); if (__pyx_1 == (-1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 34; got o __pyx_L1;}
900
901 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\accepte x.pxi":36 */
902 lpGetAcceptExSockaddrs(__pyx_v_mem_buffer,0,(__pyx_v_size / 2),(__pyx_v_size / 2),(&__pyx_v_localaddr),(&__pyx_v_locallen),(&__pyx_v_remoteaddr),(&__pyx_v_rem otelen));
903
904 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\accepte x.pxi":37 */
905 __pyx_2 = PyInt_FromLong(__pyx_v_remoteaddr->sa_family); if (!__pyx_2) {__pyx_ filename = __pyx_f[1]; __pyx_lineno = 37; goto __pyx_L1;}
906 __pyx_3 = __pyx_f_11iocpsupport__makesockaddr(__pyx_v_localaddr,__pyx_v_locall en); if (!__pyx_3) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 37; goto __pyx_L 1;}
907 __pyx_4 = __pyx_f_11iocpsupport__makesockaddr(__pyx_v_remoteaddr,__pyx_v_remot elen); if (!__pyx_4) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 37; goto __pyx _L1;}
908 __pyx_5 = PyTuple_New(3); if (!__pyx_5) {__pyx_filename = __pyx_f[1]; __pyx_li neno = 37; goto __pyx_L1;}
909 PyTuple_SET_ITEM(__pyx_5, 0, __pyx_2);
910 PyTuple_SET_ITEM(__pyx_5, 1, __pyx_3);
911 PyTuple_SET_ITEM(__pyx_5, 2, __pyx_4);
912 __pyx_2 = 0;
913 __pyx_3 = 0;
914 __pyx_4 = 0;
915 __pyx_r = __pyx_5;
916 __pyx_5 = 0;
917 goto __pyx_L0;
918
919 __pyx_r = Py_None; Py_INCREF(Py_None);
920 goto __pyx_L0;
921 __pyx_L1:;
922 Py_XDECREF(__pyx_2);
923 Py_XDECREF(__pyx_3);
924 Py_XDECREF(__pyx_4);
925 Py_XDECREF(__pyx_5);
926 __Pyx_AddTraceback("iocpsupport.get_accept_addrs");
927 __pyx_r = 0;
928 __pyx_L0:;
929 Py_DECREF(__pyx_v_buff);
930 return __pyx_r;
931 }
932
933 static PyObject *__pyx_k14p;
934 static PyObject *__pyx_k15p;
935
936 static char __pyx_k14[] = "ConnectEx is not available on this system";
937 static char __pyx_k15[] = "unsupported address family";
938
939 static PyObject *__pyx_f_11iocpsupport_connect(PyObject *__pyx_self, PyObject *_ _pyx_args, PyObject *__pyx_kwds); /*proto*/
940 static PyObject *__pyx_f_11iocpsupport_connect(PyObject *__pyx_self, PyObject *_ _pyx_args, PyObject *__pyx_kwds) {
941 long __pyx_v_s;
942 PyObject *__pyx_v_addr = 0;
943 PyObject *__pyx_v_obj = 0;
944 int __pyx_v_family;
945 int __pyx_v_rc;
946 struct __pyx_t_11iocpsupport_myOVERLAPPED *__pyx_v_ov;
947 struct sockaddr __pyx_v_name;
948 PyObject *__pyx_r;
949 PyObject *__pyx_1 = 0;
950 int __pyx_2;
951 int __pyx_3;
952 struct __pyx_t_11iocpsupport_myOVERLAPPED *__pyx_4;
953 static char *__pyx_argnames[] = {"s","addr","obj",0};
954 if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "lOO", __pyx_argnames , &__pyx_v_s, &__pyx_v_addr, &__pyx_v_obj)) return 0;
955 Py_INCREF(__pyx_v_addr);
956 Py_INCREF(__pyx_v_obj);
957
958 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\connect ex.pxi":10 */
959 __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n_have_connectex); if (!__pyx_1) {__pyx _filename = __pyx_f[2]; __pyx_lineno = 10; goto __pyx_L1;}
960 __pyx_2 = PyObject_IsTrue(__pyx_1); if (__pyx_2 < 0) {__pyx_filename = __pyx_f [2]; __pyx_lineno = 10; goto __pyx_L1;}
961 Py_DECREF(__pyx_1); __pyx_1 = 0;
962 __pyx_3 = (!__pyx_2);
963 if (__pyx_3) {
964 __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_1) {__pyx_f ilename = __pyx_f[2]; __pyx_lineno = 11; goto __pyx_L1;}
965 __Pyx_Raise(__pyx_1, __pyx_k14p, 0);
966 Py_DECREF(__pyx_1); __pyx_1 = 0;
967 {__pyx_filename = __pyx_f[2]; __pyx_lineno = 11; goto __pyx_L1;}
968 goto __pyx_L2;
969 }
970 __pyx_L2:;
971
972 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\connect ex.pxi":13 */
973 __pyx_2 = __pyx_f_11iocpsupport_getAddrFamily(__pyx_v_s); if (PyErr_Occurred() ) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 13; goto __pyx_L1;}
974 __pyx_v_family = __pyx_2;
975
976 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\connect ex.pxi":14 */
977 __pyx_3 = (__pyx_v_family == AF_INET);
978 if (__pyx_3) {
979 __pyx_1 = __pyx_f_11iocpsupport_fillinetaddr(((struct sockaddr_in *)(&__pyx_ v_name)),__pyx_v_addr); if (!__pyx_1) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 15; goto __pyx_L1;}
980 Py_DECREF(__pyx_1); __pyx_1 = 0;
981 goto __pyx_L3;
982 }
983 /*else*/ {
984 __pyx_1 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_1) {__pyx_f ilename = __pyx_f[2]; __pyx_lineno = 17; goto __pyx_L1;}
985 __Pyx_Raise(__pyx_1, __pyx_k15p, 0);
986 Py_DECREF(__pyx_1); __pyx_1 = 0;
987 {__pyx_filename = __pyx_f[2]; __pyx_lineno = 17; goto __pyx_L1;}
988 }
989 __pyx_L3:;
990
991 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\connect ex.pxi":18 */
992 __pyx_v_name.sa_family = __pyx_v_family;
993
994 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\connect ex.pxi":20 */
995 __pyx_4 = __pyx_f_11iocpsupport_makeOV(); if (__pyx_4 == NULL) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 20; goto __pyx_L1;}
996 __pyx_v_ov = __pyx_4;
997
998 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\connect ex.pxi":21 */
999 __pyx_2 = __pyx_v_obj != Py_None;
1000 if (__pyx_2) {
1001 __pyx_v_ov->obj = ((struct PyObject *)__pyx_v_obj);
1002 goto __pyx_L4;
1003 }
1004 __pyx_L4:;
1005
1006 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\connect ex.pxi":24 */
1007 __pyx_v_rc = lpConnectEx(__pyx_v_s,(&__pyx_v_name),(sizeof(__pyx_v_name)),NULL ,0,NULL,((OVERLAPPED *)__pyx_v_ov));
1008
1009 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\connect ex.pxi":26 */
1010 __pyx_3 = (!__pyx_v_rc);
1011 if (__pyx_3) {
1012
1013 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\conne ctex.pxi":27 */
1014 __pyx_v_rc = WSAGetLastError();
1015
1016 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\conne ctex.pxi":28 */
1017 __pyx_2 = (__pyx_v_rc != ERROR_IO_PENDING);
1018 if (__pyx_2) {
1019 __pyx_1 = PyInt_FromLong(__pyx_v_rc); if (!__pyx_1) {__pyx_filename = __py x_f[2]; __pyx_lineno = 29; goto __pyx_L1;}
1020 __pyx_r = __pyx_1;
1021 __pyx_1 = 0;
1022 goto __pyx_L0;
1023 goto __pyx_L6;
1024 }
1025 __pyx_L6:;
1026 goto __pyx_L5;
1027 }
1028 __pyx_L5:;
1029
1030 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\connect ex.pxi":32 */
1031 Py_XINCREF(__pyx_v_obj);
1032
1033 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\connect ex.pxi":33 */
1034 __pyx_1 = PyInt_FromLong(__pyx_v_rc); if (!__pyx_1) {__pyx_filename = __pyx_f[ 2]; __pyx_lineno = 33; goto __pyx_L1;}
1035 __pyx_r = __pyx_1;
1036 __pyx_1 = 0;
1037 goto __pyx_L0;
1038
1039 __pyx_r = Py_None; Py_INCREF(Py_None);
1040 goto __pyx_L0;
1041 __pyx_L1:;
1042 Py_XDECREF(__pyx_1);
1043 __Pyx_AddTraceback("iocpsupport.connect");
1044 __pyx_r = 0;
1045 __pyx_L0:;
1046 Py_DECREF(__pyx_v_addr);
1047 Py_DECREF(__pyx_v_obj);
1048 return __pyx_r;
1049 }
1050
1051 static char __pyx_k16[] = "second argument needs to be a list";
1052
1053 static PyObject *__pyx_f_11iocpsupport_recv(PyObject *__pyx_self, PyObject *__py x_args, PyObject *__pyx_kwds); /*proto*/
1054 static PyObject *__pyx_f_11iocpsupport_recv(PyObject *__pyx_self, PyObject *__py x_args, PyObject *__pyx_kwds) {
1055 long __pyx_v_s;
1056 PyObject *__pyx_v_bufflist = 0;
1057 PyObject *__pyx_v_obj = 0;
1058 unsigned long __pyx_v_flags;
1059 int __pyx_v_rc;
1060 int __pyx_v_buffcount;
1061 int __pyx_v_i;
1062 struct __pyx_t_11iocpsupport_myOVERLAPPED *__pyx_v_ov;
1063 WSABUF *__pyx_v_ws_buf;
1064 unsigned long __pyx_v_bytes;
1065 struct PyObject **__pyx_v_buffers;
1066 PyObject *__pyx_r;
1067 PyObject *__pyx_1 = 0;
1068 void *__pyx_2;
1069 int __pyx_3;
1070 struct __pyx_t_11iocpsupport_myOVERLAPPED *__pyx_4;
1071 PyObject *__pyx_5 = 0;
1072 PyObject *__pyx_6 = 0;
1073 static char *__pyx_argnames[] = {"s","bufflist","obj","flags",0};
1074 __pyx_v_flags = __pyx_k5;
1075 if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "lOO|k", __pyx_argnam es, &__pyx_v_s, &__pyx_v_bufflist, &__pyx_v_obj, &__pyx_v_flags)) return 0;
1076 Py_INCREF(__pyx_v_bufflist);
1077 Py_INCREF(__pyx_v_obj);
1078
1079 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\wsarecv .pxi":12 */
1080 __pyx_1 = PySequence_Fast(__pyx_v_bufflist,__pyx_k16); if (!__pyx_1) {__pyx_fi lename = __pyx_f[3]; __pyx_lineno = 12; goto __pyx_L1;}
1081 Py_DECREF(__pyx_v_bufflist);
1082 __pyx_v_bufflist = __pyx_1;
1083 __pyx_1 = 0;
1084
1085 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\wsarecv .pxi":13 */
1086 __pyx_v_buffcount = PySequence_Fast_GET_SIZE(__pyx_v_bufflist);
1087
1088 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\wsarecv .pxi":14 */
1089 __pyx_v_buffers = PySequence_Fast_ITEMS(__pyx_v_bufflist);
1090
1091 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\wsarecv .pxi":16 */
1092 __pyx_2 = PyMem_Malloc((__pyx_v_buffcount * (sizeof(WSABUF)))); if (__pyx_2 == NULL) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 16; goto __pyx_L1;}
1093 __pyx_v_ws_buf = ((WSABUF *)__pyx_2);
1094
1095 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\wsarecv .pxi":18 */
1096 /*try:*/ {
1097
1098 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\wsare cv.pxi":19 */
1099 for (__pyx_v_i = 0; __pyx_v_i < __pyx_v_buffcount; ++__pyx_v_i) {
1100 __pyx_1 = (PyObject *)(__pyx_v_buffers[__pyx_v_i]);
1101 Py_INCREF(__pyx_1);
1102 __pyx_3 = PyObject_AsWriteBuffer(__pyx_1,((void **)(&(__pyx_v_ws_buf[__pyx _v_i]).buf)),((int *)(&(__pyx_v_ws_buf[__pyx_v_i]).len))); if (__pyx_3 == (-1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 20; goto __pyx_L3;}
1103 Py_DECREF(__pyx_1); __pyx_1 = 0;
1104 }
1105
1106 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\wsare cv.pxi":22 */
1107 __pyx_4 = __pyx_f_11iocpsupport_makeOV(); if (__pyx_4 == NULL) {__pyx_filena me = __pyx_f[3]; __pyx_lineno = 22; goto __pyx_L3;}
1108 __pyx_v_ov = __pyx_4;
1109
1110 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\wsare cv.pxi":23 */
1111 __pyx_3 = __pyx_v_obj != Py_None;
1112 if (__pyx_3) {
1113 __pyx_v_ov->obj = ((struct PyObject *)__pyx_v_obj);
1114 goto __pyx_L7;
1115 }
1116 __pyx_L7:;
1117
1118 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\wsare cv.pxi":26 */
1119 __pyx_v_rc = WSARecv(__pyx_v_s,__pyx_v_ws_buf,__pyx_v_buffcount,(&__pyx_v_by tes),(&__pyx_v_flags),((OVERLAPPED *)__pyx_v_ov),NULL);
1120
1121 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\wsare cv.pxi":28 */
1122 __pyx_3 = (__pyx_v_rc == SOCKET_ERROR);
1123 if (__pyx_3) {
1124
1125 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\wsa recv.pxi":29 */
1126 __pyx_v_rc = WSAGetLastError();
1127
1128 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\wsa recv.pxi":30 */
1129 __pyx_3 = (__pyx_v_rc != ERROR_IO_PENDING);
1130 if (__pyx_3) {
1131 __pyx_1 = PyInt_FromLong(__pyx_v_rc); if (!__pyx_1) {__pyx_filename = __ pyx_f[3]; __pyx_lineno = 31; goto __pyx_L3;}
1132 __pyx_5 = PyInt_FromLong(0); if (!__pyx_5) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 31; goto __pyx_L3;}
1133 __pyx_6 = PyTuple_New(2); if (!__pyx_6) {__pyx_filename = __pyx_f[3]; __ pyx_lineno = 31; goto __pyx_L3;}
1134 PyTuple_SET_ITEM(__pyx_6, 0, __pyx_1);
1135 PyTuple_SET_ITEM(__pyx_6, 1, __pyx_5);
1136 __pyx_1 = 0;
1137 __pyx_5 = 0;
1138 __pyx_r = __pyx_6;
1139 __pyx_6 = 0;
1140 goto __pyx_L2;
1141 goto __pyx_L9;
1142 }
1143 __pyx_L9:;
1144 goto __pyx_L8;
1145 }
1146 __pyx_L8:;
1147
1148 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\wsare cv.pxi":33 */
1149 Py_XINCREF(__pyx_v_obj);
1150
1151 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\wsare cv.pxi":34 */
1152 __pyx_1 = PyInt_FromLong(__pyx_v_rc); if (!__pyx_1) {__pyx_filename = __pyx_ f[3]; __pyx_lineno = 34; goto __pyx_L3;}
1153 __pyx_5 = PyLong_FromUnsignedLong(__pyx_v_bytes); if (!__pyx_5) {__pyx_filen ame = __pyx_f[3]; __pyx_lineno = 34; goto __pyx_L3;}
1154 __pyx_6 = PyTuple_New(2); if (!__pyx_6) {__pyx_filename = __pyx_f[3]; __pyx_ lineno = 34; goto __pyx_L3;}
1155 PyTuple_SET_ITEM(__pyx_6, 0, __pyx_1);
1156 PyTuple_SET_ITEM(__pyx_6, 1, __pyx_5);
1157 __pyx_1 = 0;
1158 __pyx_5 = 0;
1159 __pyx_r = __pyx_6;
1160 __pyx_6 = 0;
1161 goto __pyx_L2;
1162 }
1163 /*finally:*/ {
1164 int __pyx_why;
1165 PyObject *__pyx_exc_type, *__pyx_exc_value, *__pyx_exc_tb;
1166 int __pyx_exc_lineno;
1167 __pyx_why = 0; goto __pyx_L4;
1168 __pyx_L2: __pyx_why = 3; goto __pyx_L4;
1169 __pyx_L3: {
1170 __pyx_why = 4;
1171 Py_XDECREF(__pyx_1); __pyx_1 = 0;
1172 Py_XDECREF(__pyx_5); __pyx_5 = 0;
1173 Py_XDECREF(__pyx_6); __pyx_6 = 0;
1174 PyErr_Fetch(&__pyx_exc_type, &__pyx_exc_value, &__pyx_exc_tb);
1175 __pyx_exc_lineno = __pyx_lineno;
1176 goto __pyx_L4;
1177 }
1178 __pyx_L4:;
1179 PyMem_Free(__pyx_v_ws_buf);
1180 switch (__pyx_why) {
1181 case 3: goto __pyx_L0;
1182 case 4: {
1183 PyErr_Restore(__pyx_exc_type, __pyx_exc_value, __pyx_exc_tb);
1184 __pyx_lineno = __pyx_exc_lineno;
1185 __pyx_exc_type = 0;
1186 __pyx_exc_value = 0;
1187 __pyx_exc_tb = 0;
1188 goto __pyx_L1;
1189 }
1190 }
1191 }
1192
1193 __pyx_r = Py_None; Py_INCREF(Py_None);
1194 goto __pyx_L0;
1195 __pyx_L1:;
1196 Py_XDECREF(__pyx_1);
1197 Py_XDECREF(__pyx_5);
1198 Py_XDECREF(__pyx_6);
1199 __Pyx_AddTraceback("iocpsupport.recv");
1200 __pyx_r = 0;
1201 __pyx_L0:;
1202 Py_DECREF(__pyx_v_bufflist);
1203 Py_DECREF(__pyx_v_obj);
1204 return __pyx_r;
1205 }
1206
1207 static PyObject *__pyx_f_11iocpsupport_recvfrom(PyObject *__pyx_self, PyObject * __pyx_args, PyObject *__pyx_kwds); /*proto*/
1208 static PyObject *__pyx_f_11iocpsupport_recvfrom(PyObject *__pyx_self, PyObject * __pyx_args, PyObject *__pyx_kwds) {
1209 long __pyx_v_s;
1210 PyObject *__pyx_v_buff = 0;
1211 PyObject *__pyx_v_addr_buff = 0;
1212 PyObject *__pyx_v_obj = 0;
1213 unsigned long __pyx_v_flags;
1214 int __pyx_v_rc;
1215 int __pyx_v_fromlen;
1216 struct __pyx_t_11iocpsupport_myOVERLAPPED *__pyx_v_ov;
1217 WSABUF __pyx_v_ws_buf;
1218 unsigned long __pyx_v_bytes;
1219 struct sockaddr *__pyx_v_fromaddr;
1220 PyObject *__pyx_r;
1221 int __pyx_1;
1222 struct __pyx_t_11iocpsupport_myOVERLAPPED *__pyx_2;
1223 PyObject *__pyx_3 = 0;
1224 PyObject *__pyx_4 = 0;
1225 PyObject *__pyx_5 = 0;
1226 static char *__pyx_argnames[] = {"s","buff","addr_buff","obj","flags",0};
1227 __pyx_v_flags = __pyx_k6;
1228 if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "lOOO|k", __pyx_argna mes, &__pyx_v_s, &__pyx_v_buff, &__pyx_v_addr_buff, &__pyx_v_obj, &__pyx_v_flags )) return 0;
1229 Py_INCREF(__pyx_v_buff);
1230 Py_INCREF(__pyx_v_addr_buff);
1231 Py_INCREF(__pyx_v_obj);
1232
1233 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\wsarecv .pxi":45 */
1234 __pyx_1 = PyObject_AsWriteBuffer(__pyx_v_buff,((void **)(&__pyx_v_ws_buf.buf)) ,((int *)(&__pyx_v_ws_buf.len))); if (__pyx_1 == (-1)) {__pyx_filename = __pyx_f [3]; __pyx_lineno = 45; goto __pyx_L1;}
1235
1236 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\wsarecv .pxi":46 */
1237 __pyx_1 = PyObject_AsWriteBuffer(__pyx_v_addr_buff,((void **)(&__pyx_v_fromadd r)),(&__pyx_v_fromlen)); if (__pyx_1 == (-1)) {__pyx_filename = __pyx_f[3]; __py x_lineno = 46; goto __pyx_L1;}
1238
1239 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\wsarecv .pxi":48 */
1240 __pyx_2 = __pyx_f_11iocpsupport_makeOV(); if (__pyx_2 == NULL) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 48; goto __pyx_L1;}
1241 __pyx_v_ov = __pyx_2;
1242
1243 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\wsarecv .pxi":49 */
1244 __pyx_1 = __pyx_v_obj != Py_None;
1245 if (__pyx_1) {
1246 __pyx_v_ov->obj = ((struct PyObject *)__pyx_v_obj);
1247 goto __pyx_L2;
1248 }
1249 __pyx_L2:;
1250
1251 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\wsarecv .pxi":52 */
1252 __pyx_v_rc = WSARecvFrom(__pyx_v_s,(&__pyx_v_ws_buf),1,(&__pyx_v_bytes),(&__py x_v_flags),__pyx_v_fromaddr,(&__pyx_v_fromlen),((OVERLAPPED *)__pyx_v_ov),NULL);
1253
1254 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\wsarecv .pxi":54 */
1255 __pyx_1 = (__pyx_v_rc == SOCKET_ERROR);
1256 if (__pyx_1) {
1257
1258 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\wsare cv.pxi":55 */
1259 __pyx_v_rc = WSAGetLastError();
1260
1261 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\wsare cv.pxi":56 */
1262 __pyx_1 = (__pyx_v_rc != ERROR_IO_PENDING);
1263 if (__pyx_1) {
1264 __pyx_3 = PyInt_FromLong(__pyx_v_rc); if (!__pyx_3) {__pyx_filename = __py x_f[3]; __pyx_lineno = 57; goto __pyx_L1;}
1265 __pyx_4 = PyInt_FromLong(0); if (!__pyx_4) {__pyx_filename = __pyx_f[3]; _ _pyx_lineno = 57; goto __pyx_L1;}
1266 __pyx_5 = PyTuple_New(2); if (!__pyx_5) {__pyx_filename = __pyx_f[3]; __py x_lineno = 57; goto __pyx_L1;}
1267 PyTuple_SET_ITEM(__pyx_5, 0, __pyx_3);
1268 PyTuple_SET_ITEM(__pyx_5, 1, __pyx_4);
1269 __pyx_3 = 0;
1270 __pyx_4 = 0;
1271 __pyx_r = __pyx_5;
1272 __pyx_5 = 0;
1273 goto __pyx_L0;
1274 goto __pyx_L4;
1275 }
1276 __pyx_L4:;
1277 goto __pyx_L3;
1278 }
1279 __pyx_L3:;
1280
1281 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\wsarecv .pxi":59 */
1282 Py_XINCREF(__pyx_v_obj);
1283
1284 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\wsarecv .pxi":60 */
1285 __pyx_3 = PyInt_FromLong(__pyx_v_rc); if (!__pyx_3) {__pyx_filename = __pyx_f[ 3]; __pyx_lineno = 60; goto __pyx_L1;}
1286 __pyx_4 = PyLong_FromUnsignedLong(__pyx_v_bytes); if (!__pyx_4) {__pyx_filenam e = __pyx_f[3]; __pyx_lineno = 60; goto __pyx_L1;}
1287 __pyx_5 = PyTuple_New(2); if (!__pyx_5) {__pyx_filename = __pyx_f[3]; __pyx_li neno = 60; goto __pyx_L1;}
1288 PyTuple_SET_ITEM(__pyx_5, 0, __pyx_3);
1289 PyTuple_SET_ITEM(__pyx_5, 1, __pyx_4);
1290 __pyx_3 = 0;
1291 __pyx_4 = 0;
1292 __pyx_r = __pyx_5;
1293 __pyx_5 = 0;
1294 goto __pyx_L0;
1295
1296 __pyx_r = Py_None; Py_INCREF(Py_None);
1297 goto __pyx_L0;
1298 __pyx_L1:;
1299 Py_XDECREF(__pyx_3);
1300 Py_XDECREF(__pyx_4);
1301 Py_XDECREF(__pyx_5);
1302 __Pyx_AddTraceback("iocpsupport.recvfrom");
1303 __pyx_r = 0;
1304 __pyx_L0:;
1305 Py_DECREF(__pyx_v_buff);
1306 Py_DECREF(__pyx_v_addr_buff);
1307 Py_DECREF(__pyx_v_obj);
1308 return __pyx_r;
1309 }
1310
1311 static PyObject *__pyx_f_11iocpsupport_send(PyObject *__pyx_self, PyObject *__py x_args, PyObject *__pyx_kwds); /*proto*/
1312 static PyObject *__pyx_f_11iocpsupport_send(PyObject *__pyx_self, PyObject *__py x_args, PyObject *__pyx_kwds) {
1313 long __pyx_v_s;
1314 PyObject *__pyx_v_buff = 0;
1315 PyObject *__pyx_v_obj = 0;
1316 unsigned long __pyx_v_flags;
1317 int __pyx_v_rc;
1318 struct __pyx_t_11iocpsupport_myOVERLAPPED *__pyx_v_ov;
1319 WSABUF __pyx_v_ws_buf;
1320 unsigned long __pyx_v_bytes;
1321 PyObject *__pyx_r;
1322 int __pyx_1;
1323 struct __pyx_t_11iocpsupport_myOVERLAPPED *__pyx_2;
1324 PyObject *__pyx_3 = 0;
1325 PyObject *__pyx_4 = 0;
1326 PyObject *__pyx_5 = 0;
1327 static char *__pyx_argnames[] = {"s","buff","obj","flags",0};
1328 __pyx_v_flags = __pyx_k7;
1329 if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "lOO|k", __pyx_argnam es, &__pyx_v_s, &__pyx_v_buff, &__pyx_v_obj, &__pyx_v_flags)) return 0;
1330 Py_INCREF(__pyx_v_buff);
1331 Py_INCREF(__pyx_v_obj);
1332
1333 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\wsasend .pxi":11 */
1334 __pyx_1 = PyObject_AsReadBuffer(__pyx_v_buff,((void **)(&__pyx_v_ws_buf.buf)), ((int *)(&__pyx_v_ws_buf.len))); if (__pyx_1 == (-1)) {__pyx_filename = __pyx_f[ 4]; __pyx_lineno = 11; goto __pyx_L1;}
1335
1336 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\wsasend .pxi":13 */
1337 __pyx_2 = __pyx_f_11iocpsupport_makeOV(); if (__pyx_2 == NULL) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 13; goto __pyx_L1;}
1338 __pyx_v_ov = __pyx_2;
1339
1340 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\wsasend .pxi":14 */
1341 __pyx_1 = __pyx_v_obj != Py_None;
1342 if (__pyx_1) {
1343 __pyx_v_ov->obj = ((struct PyObject *)__pyx_v_obj);
1344 goto __pyx_L2;
1345 }
1346 __pyx_L2:;
1347
1348 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\wsasend .pxi":17 */
1349 __pyx_v_rc = WSASend(__pyx_v_s,(&__pyx_v_ws_buf),1,(&__pyx_v_bytes),__pyx_v_fl ags,((OVERLAPPED *)__pyx_v_ov),NULL);
1350
1351 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\wsasend .pxi":19 */
1352 __pyx_1 = (__pyx_v_rc == SOCKET_ERROR);
1353 if (__pyx_1) {
1354
1355 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\wsase nd.pxi":20 */
1356 __pyx_v_rc = WSAGetLastError();
1357
1358 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\wsase nd.pxi":21 */
1359 __pyx_1 = (__pyx_v_rc != ERROR_IO_PENDING);
1360 if (__pyx_1) {
1361 __pyx_3 = PyInt_FromLong(__pyx_v_rc); if (!__pyx_3) {__pyx_filename = __py x_f[4]; __pyx_lineno = 22; goto __pyx_L1;}
1362 __pyx_4 = PyLong_FromUnsignedLong(__pyx_v_bytes); if (!__pyx_4) {__pyx_fil ename = __pyx_f[4]; __pyx_lineno = 22; goto __pyx_L1;}
1363 __pyx_5 = PyTuple_New(2); if (!__pyx_5) {__pyx_filename = __pyx_f[4]; __py x_lineno = 22; goto __pyx_L1;}
1364 PyTuple_SET_ITEM(__pyx_5, 0, __pyx_3);
1365 PyTuple_SET_ITEM(__pyx_5, 1, __pyx_4);
1366 __pyx_3 = 0;
1367 __pyx_4 = 0;
1368 __pyx_r = __pyx_5;
1369 __pyx_5 = 0;
1370 goto __pyx_L0;
1371 goto __pyx_L4;
1372 }
1373 __pyx_L4:;
1374 goto __pyx_L3;
1375 }
1376 __pyx_L3:;
1377
1378 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\wsasend .pxi":24 */
1379 Py_XINCREF(__pyx_v_obj);
1380
1381 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\wsasend .pxi":25 */
1382 __pyx_3 = PyInt_FromLong(__pyx_v_rc); if (!__pyx_3) {__pyx_filename = __pyx_f[ 4]; __pyx_lineno = 25; goto __pyx_L1;}
1383 __pyx_4 = PyLong_FromUnsignedLong(__pyx_v_bytes); if (!__pyx_4) {__pyx_filenam e = __pyx_f[4]; __pyx_lineno = 25; goto __pyx_L1;}
1384 __pyx_5 = PyTuple_New(2); if (!__pyx_5) {__pyx_filename = __pyx_f[4]; __pyx_li neno = 25; goto __pyx_L1;}
1385 PyTuple_SET_ITEM(__pyx_5, 0, __pyx_3);
1386 PyTuple_SET_ITEM(__pyx_5, 1, __pyx_4);
1387 __pyx_3 = 0;
1388 __pyx_4 = 0;
1389 __pyx_r = __pyx_5;
1390 __pyx_5 = 0;
1391 goto __pyx_L0;
1392
1393 __pyx_r = Py_None; Py_INCREF(Py_None);
1394 goto __pyx_L0;
1395 __pyx_L1:;
1396 Py_XDECREF(__pyx_3);
1397 Py_XDECREF(__pyx_4);
1398 Py_XDECREF(__pyx_5);
1399 __Pyx_AddTraceback("iocpsupport.send");
1400 __pyx_r = 0;
1401 __pyx_L0:;
1402 Py_DECREF(__pyx_v_buff);
1403 Py_DECREF(__pyx_v_obj);
1404 return __pyx_r;
1405 }
1406
1407 static __Pyx_InternTabEntry __pyx_intern_tab[] = {
1408 {&__pyx_n_CreateIoCompletionPort, "CreateIoCompletionPort"},
1409 {&__pyx_n_Event, "Event"},
1410 {&__pyx_n_False, "False"},
1411 {&__pyx_n_MemoryError, "MemoryError"},
1412 {&__pyx_n_PostQueuedCompletionStatus, "PostQueuedCompletionStatus"},
1413 {&__pyx_n_ValueError, "ValueError"},
1414 {&__pyx_n_WindowsError, "WindowsError"},
1415 {&__pyx_n___init__, "__init__"},
1416 {&__pyx_n_callback, "callback"},
1417 {&__pyx_n_getsockopt, "getsockopt"},
1418 {&__pyx_n_have_connectex, "have_connectex"},
1419 {&__pyx_n_ignore, "ignore"},
1420 {&__pyx_n_items, "items"},
1421 {&__pyx_n_owner, "owner"},
1422 {&__pyx_n_socket, "socket"},
1423 {0, 0}
1424 };
1425
1426 static __Pyx_StringTabEntry __pyx_string_tab[] = {
1427 {&__pyx_k4p, __pyx_k4, sizeof(__pyx_k4)},
1428 {&__pyx_k11p, __pyx_k11, sizeof(__pyx_k11)},
1429 {&__pyx_k14p, __pyx_k14, sizeof(__pyx_k14)},
1430 {&__pyx_k15p, __pyx_k15, sizeof(__pyx_k15)},
1431 {0, 0, 0}
1432 };
1433
1434 static PyObject *__pyx_tp_new_11iocpsupport_CompletionPort(PyTypeObject *t, PyOb ject *a, PyObject *k) {
1435 PyObject *o = (*t->tp_alloc)(t, 0);
1436 if (!o) return 0;
1437 return o;
1438 }
1439
1440 static void __pyx_tp_dealloc_11iocpsupport_CompletionPort(PyObject *o) {
1441 (*o->ob_type->tp_free)(o);
1442 }
1443
1444 static int __pyx_tp_traverse_11iocpsupport_CompletionPort(PyObject *o, visitproc v, void *a) {
1445 return 0;
1446 }
1447
1448 static int __pyx_tp_clear_11iocpsupport_CompletionPort(PyObject *o) {
1449 return 0;
1450 }
1451
1452 static struct PyMethodDef __pyx_methods_11iocpsupport_CompletionPort[] = {
1453 {"addHandle", (PyCFunction)__pyx_f_11iocpsupport_14CompletionPort_addHandle, M ETH_VARARGS|METH_KEYWORDS, 0},
1454 {"getEvent", (PyCFunction)__pyx_f_11iocpsupport_14CompletionPort_getEvent, MET H_VARARGS|METH_KEYWORDS, 0},
1455 {"postEvent", (PyCFunction)__pyx_f_11iocpsupport_14CompletionPort_postEvent, M ETH_VARARGS|METH_KEYWORDS, 0},
1456 {"__del__", (PyCFunction)__pyx_f_11iocpsupport_14CompletionPort___del__, METH_ VARARGS|METH_KEYWORDS, 0},
1457 {0, 0, 0, 0}
1458 };
1459
1460 static PyNumberMethods __pyx_tp_as_number_CompletionPort = {
1461 0, /*nb_add*/
1462 0, /*nb_subtract*/
1463 0, /*nb_multiply*/
1464 0, /*nb_divide*/
1465 0, /*nb_remainder*/
1466 0, /*nb_divmod*/
1467 0, /*nb_power*/
1468 0, /*nb_negative*/
1469 0, /*nb_positive*/
1470 0, /*nb_absolute*/
1471 0, /*nb_nonzero*/
1472 0, /*nb_invert*/
1473 0, /*nb_lshift*/
1474 0, /*nb_rshift*/
1475 0, /*nb_and*/
1476 0, /*nb_xor*/
1477 0, /*nb_or*/
1478 0, /*nb_coerce*/
1479 0, /*nb_int*/
1480 0, /*nb_long*/
1481 0, /*nb_float*/
1482 0, /*nb_oct*/
1483 0, /*nb_hex*/
1484 0, /*nb_inplace_add*/
1485 0, /*nb_inplace_subtract*/
1486 0, /*nb_inplace_multiply*/
1487 0, /*nb_inplace_divide*/
1488 0, /*nb_inplace_remainder*/
1489 0, /*nb_inplace_power*/
1490 0, /*nb_inplace_lshift*/
1491 0, /*nb_inplace_rshift*/
1492 0, /*nb_inplace_and*/
1493 0, /*nb_inplace_xor*/
1494 0, /*nb_inplace_or*/
1495 0, /*nb_floor_divide*/
1496 0, /*nb_true_divide*/
1497 0, /*nb_inplace_floor_divide*/
1498 0, /*nb_inplace_true_divide*/
1499 #if Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX
1500 0, /*nb_index*/
1501 #endif
1502 };
1503
1504 static PySequenceMethods __pyx_tp_as_sequence_CompletionPort = {
1505 0, /*sq_length*/
1506 0, /*sq_concat*/
1507 0, /*sq_repeat*/
1508 0, /*sq_item*/
1509 0, /*sq_slice*/
1510 0, /*sq_ass_item*/
1511 0, /*sq_ass_slice*/
1512 0, /*sq_contains*/
1513 0, /*sq_inplace_concat*/
1514 0, /*sq_inplace_repeat*/
1515 };
1516
1517 static PyMappingMethods __pyx_tp_as_mapping_CompletionPort = {
1518 0, /*mp_length*/
1519 0, /*mp_subscript*/
1520 0, /*mp_ass_subscript*/
1521 };
1522
1523 static PyBufferProcs __pyx_tp_as_buffer_CompletionPort = {
1524 0, /*bf_getreadbuffer*/
1525 0, /*bf_getwritebuffer*/
1526 0, /*bf_getsegcount*/
1527 0, /*bf_getcharbuffer*/
1528 };
1529
1530 PyTypeObject __pyx_type_11iocpsupport_CompletionPort = {
1531 PyObject_HEAD_INIT(0)
1532 0, /*ob_size*/
1533 "iocpsupport.CompletionPort", /*tp_name*/
1534 sizeof(struct __pyx_obj_11iocpsupport_CompletionPort), /*tp_basicsize*/
1535 0, /*tp_itemsize*/
1536 __pyx_tp_dealloc_11iocpsupport_CompletionPort, /*tp_dealloc*/
1537 0, /*tp_print*/
1538 0, /*tp_getattr*/
1539 0, /*tp_setattr*/
1540 0, /*tp_compare*/
1541 0, /*tp_repr*/
1542 &__pyx_tp_as_number_CompletionPort, /*tp_as_number*/
1543 &__pyx_tp_as_sequence_CompletionPort, /*tp_as_sequence*/
1544 &__pyx_tp_as_mapping_CompletionPort, /*tp_as_mapping*/
1545 0, /*tp_hash*/
1546 0, /*tp_call*/
1547 0, /*tp_str*/
1548 0, /*tp_getattro*/
1549 0, /*tp_setattro*/
1550 &__pyx_tp_as_buffer_CompletionPort, /*tp_as_buffer*/
1551 Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_G C, /*tp_flags*/
1552 0, /*tp_doc*/
1553 __pyx_tp_traverse_11iocpsupport_CompletionPort, /*tp_traverse*/
1554 __pyx_tp_clear_11iocpsupport_CompletionPort, /*tp_clear*/
1555 0, /*tp_richcompare*/
1556 0, /*tp_weaklistoffset*/
1557 0, /*tp_iter*/
1558 0, /*tp_iternext*/
1559 __pyx_methods_11iocpsupport_CompletionPort, /*tp_methods*/
1560 0, /*tp_members*/
1561 0, /*tp_getset*/
1562 0, /*tp_base*/
1563 0, /*tp_dict*/
1564 0, /*tp_descr_get*/
1565 0, /*tp_descr_set*/
1566 0, /*tp_dictoffset*/
1567 __pyx_f_11iocpsupport_14CompletionPort___init__, /*tp_init*/
1568 0, /*tp_alloc*/
1569 __pyx_tp_new_11iocpsupport_CompletionPort, /*tp_new*/
1570 0, /*tp_free*/
1571 0, /*tp_is_gc*/
1572 0, /*tp_bases*/
1573 0, /*tp_mro*/
1574 0, /*tp_cache*/
1575 0, /*tp_subclasses*/
1576 0, /*tp_weaklist*/
1577 };
1578
1579 static struct PyMethodDef __pyx_methods[] = {
1580 {"makesockaddr", (PyCFunction)__pyx_f_11iocpsupport_makesockaddr, METH_VARARGS |METH_KEYWORDS, 0},
1581 {"AllocateReadBuffer", (PyCFunction)__pyx_f_11iocpsupport_AllocateReadBuffer, METH_VARARGS|METH_KEYWORDS, 0},
1582 {"maxAddrLen", (PyCFunction)__pyx_f_11iocpsupport_maxAddrLen, METH_VARARGS|MET H_KEYWORDS, 0},
1583 {"accept", (PyCFunction)__pyx_f_11iocpsupport_accept, METH_VARARGS|METH_KEYWOR DS, 0},
1584 {"get_accept_addrs", (PyCFunction)__pyx_f_11iocpsupport_get_accept_addrs, METH _VARARGS|METH_KEYWORDS, 0},
1585 {"connect", (PyCFunction)__pyx_f_11iocpsupport_connect, METH_VARARGS|METH_KEYW ORDS, 0},
1586 {"recv", (PyCFunction)__pyx_f_11iocpsupport_recv, METH_VARARGS|METH_KEYWORDS, 0},
1587 {"recvfrom", (PyCFunction)__pyx_f_11iocpsupport_recvfrom, METH_VARARGS|METH_KE YWORDS, 0},
1588 {"send", (PyCFunction)__pyx_f_11iocpsupport_send, METH_VARARGS|METH_KEYWORDS, 0},
1589 {0, 0, 0, 0}
1590 };
1591
1592 static void __pyx_init_filenames(void); /*proto*/
1593
1594 PyMODINIT_FUNC initiocpsupport(void); /*proto*/
1595 PyMODINIT_FUNC initiocpsupport(void) {
1596 PyObject *__pyx_1 = 0;
1597 PyObject *__pyx_2 = 0;
1598 PyObject *__pyx_3 = 0;
1599 PyObject *__pyx_4 = 0;
1600 int __pyx_5;
1601 __pyx_init_filenames();
1602 __pyx_m = Py_InitModule4("iocpsupport", __pyx_methods, 0, 0, PYTHON_API_VERSIO N);
1603 if (!__pyx_m) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5; goto __pyx_L1;};
1604 Py_INCREF(__pyx_m);
1605 __pyx_b = PyImport_AddModule("__builtin__");
1606 if (!__pyx_b) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 5; goto __pyx_L1;};
1607 if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filen ame = __pyx_f[0]; __pyx_lineno = 5; goto __pyx_L1;};
1608 if (__Pyx_InternStrings(__pyx_intern_tab) < 0) {__pyx_filename = __pyx_f[0]; _ _pyx_lineno = 5; goto __pyx_L1;};
1609 if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __p yx_lineno = 5; goto __pyx_L1;};
1610 if (PyType_Ready(&__pyx_type_11iocpsupport_CompletionPort) < 0) {__pyx_filenam e = __pyx_f[0]; __pyx_lineno = 129; goto __pyx_L1;}
1611 if (PyObject_SetAttrString(__pyx_m, "CompletionPort", (PyObject *)&__pyx_type_ 11iocpsupport_CompletionPort) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 129; goto __pyx_L1;}
1612 __pyx_ptype_11iocpsupport_CompletionPort = &__pyx_type_11iocpsupport_Completio nPort;
1613
1614 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocpsup port.pyx":121 */
1615 __pyx_1 = PyDict_New(); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_line no = 121; goto __pyx_L1;}
1616 __pyx_2 = PyTuple_New(0); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_li neno = 121; goto __pyx_L1;}
1617 __pyx_3 = __Pyx_CreateClass(__pyx_2, __pyx_1, __pyx_n_Event, "iocpsupport"); i f (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 121; goto __pyx_L1;}
1618 Py_DECREF(__pyx_2); __pyx_2 = 0;
1619 __pyx_2 = PyCFunction_New(&__pyx_mdef_11iocpsupport_5Event___init__, 0); if (! __pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 122; goto __pyx_L1;}
1620 __pyx_4 = PyMethod_New(__pyx_2, 0, __pyx_3); if (!__pyx_4) {__pyx_filename = _ _pyx_f[0]; __pyx_lineno = 122; goto __pyx_L1;}
1621 Py_DECREF(__pyx_2); __pyx_2 = 0;
1622 if (PyObject_SetAttr(__pyx_3, __pyx_n___init__, __pyx_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 122; goto __pyx_L1;}
1623 Py_DECREF(__pyx_4); __pyx_4 = 0;
1624 if (PyObject_SetAttr(__pyx_m, __pyx_n_Event, __pyx_3) < 0) {__pyx_filename = _ _pyx_f[0]; __pyx_lineno = 121; goto __pyx_L1;}
1625 Py_DECREF(__pyx_3); __pyx_3 = 0;
1626 Py_DECREF(__pyx_1); __pyx_1 = 0;
1627
1628 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocpsup port.pyx":138 */
1629 __pyx_k2 = 0;
1630
1631 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocpsup port.pyx":240 */
1632 __pyx_2 = __Pyx_Import(__pyx_n_socket, 0); if (!__pyx_2) {__pyx_filename = __p yx_f[0]; __pyx_lineno = 240; goto __pyx_L1;}
1633 if (PyObject_SetAttr(__pyx_m, __pyx_n_socket, __pyx_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 240; goto __pyx_L1;}
1634 Py_DECREF(__pyx_2); __pyx_2 = 0;
1635
1636 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocpsup port.pyx":241 */
1637 __pyx_5 = (!initWinsockPointers());
1638 if (__pyx_5) {
1639 __pyx_4 = __Pyx_GetName(__pyx_b, __pyx_n_ValueError); if (!__pyx_4) {__pyx_f ilename = __pyx_f[0]; __pyx_lineno = 242; goto __pyx_L1;}
1640 __Pyx_Raise(__pyx_4, __pyx_k4p, 0);
1641 Py_DECREF(__pyx_4); __pyx_4 = 0;
1642 {__pyx_filename = __pyx_f[0]; __pyx_lineno = 242; goto __pyx_L1;}
1643 goto __pyx_L5;
1644 }
1645 __pyx_L5:;
1646
1647 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport/iocpsup port.pyx":244 */
1648 __pyx_3 = PyInt_FromLong((lpConnectEx != NULL)); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 244; goto __pyx_L1;}
1649 if (PyObject_SetAttr(__pyx_m, __pyx_n_have_connectex, __pyx_3) < 0) {__pyx_fil ename = __pyx_f[0]; __pyx_lineno = 244; goto __pyx_L1;}
1650 Py_DECREF(__pyx_3); __pyx_3 = 0;
1651
1652 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\wsarecv .pxi":5 */
1653 __pyx_k5 = 0;
1654
1655 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\wsarecv .pxi":38 */
1656 __pyx_k6 = 0;
1657
1658 /* "X:\projects\Twisted\trunk\twisted\internet\iocpreactor\iocpsupport\wsasend .pxi":5 */
1659 __pyx_k7 = 0;
1660 return;
1661 __pyx_L1:;
1662 Py_XDECREF(__pyx_1);
1663 Py_XDECREF(__pyx_2);
1664 Py_XDECREF(__pyx_3);
1665 Py_XDECREF(__pyx_4);
1666 __Pyx_AddTraceback("iocpsupport");
1667 }
1668
1669 static char *__pyx_filenames[] = {
1670 "iocpsupport.pyx",
1671 "acceptex.pxi",
1672 "connectex.pxi",
1673 "wsarecv.pxi",
1674 "wsasend.pxi",
1675 };
1676
1677 /* Runtime support code */
1678
1679 static void __pyx_init_filenames(void) {
1680 __pyx_f = __pyx_filenames;
1681 }
1682
1683 static PyObject *__Pyx_CreateClass(
1684 PyObject *bases, PyObject *dict, PyObject *name, char *modname)
1685 {
1686 PyObject *py_modname;
1687 PyObject *result = 0;
1688
1689 py_modname = PyString_FromString(modname);
1690 if (!py_modname)
1691 goto bad;
1692 if (PyDict_SetItemString(dict, "__module__", py_modname) < 0)
1693 goto bad;
1694 result = PyClass_New(bases, dict, name);
1695 bad:
1696 Py_XDECREF(py_modname);
1697 return result;
1698 }
1699
1700 static int __Pyx_GetStarArgs(
1701 PyObject **args,
1702 PyObject **kwds,
1703 char *kwd_list[],
1704 Py_ssize_t nargs,
1705 PyObject **args2,
1706 PyObject **kwds2,
1707 char rqd_kwds[])
1708 {
1709 PyObject *x = 0, *args1 = 0, *kwds1 = 0;
1710 int i;
1711 char **p;
1712
1713 if (args2)
1714 *args2 = 0;
1715 if (kwds2)
1716 *kwds2 = 0;
1717
1718 if (args2) {
1719 args1 = PyTuple_GetSlice(*args, 0, nargs);
1720 if (!args1)
1721 goto bad;
1722 *args2 = PyTuple_GetSlice(*args, nargs, PyTuple_GET_SIZE(*args));
1723 if (!*args2)
1724 goto bad;
1725 }
1726 else if (PyTuple_GET_SIZE(*args) > nargs) {
1727 int m = nargs;
1728 int n = PyTuple_GET_SIZE(*args);
1729 PyErr_Format(PyExc_TypeError,
1730 "function takes at most %d positional arguments (%d given)",
1731 m, n);
1732 goto bad;
1733 }
1734 else {
1735 args1 = *args;
1736 Py_INCREF(args1);
1737 }
1738
1739 if (rqd_kwds && !*kwds)
1740 for (i = 0, p = kwd_list; *p; i++, p++)
1741 if (rqd_kwds[i])
1742 goto missing_kwarg;
1743
1744 if (kwds2) {
1745 if (*kwds) {
1746 kwds1 = PyDict_New();
1747 if (!kwds1)
1748 goto bad;
1749 *kwds2 = PyDict_Copy(*kwds);
1750 if (!*kwds2)
1751 goto bad;
1752 for (i = 0, p = kwd_list; *p; i++, p++) {
1753 x = PyDict_GetItemString(*kwds, *p);
1754 if (x) {
1755 if (PyDict_SetItemString(kwds1, *p, x) < 0)
1756 goto bad;
1757 if (PyDict_DelItemString(*kwds2, *p) < 0)
1758 goto bad;
1759 }
1760 else if (rqd_kwds && rqd_kwds[i])
1761 goto missing_kwarg;
1762 }
1763 }
1764 else {
1765 *kwds2 = PyDict_New();
1766 if (!*kwds2)
1767 goto bad;
1768 }
1769 }
1770 else {
1771 kwds1 = *kwds;
1772 Py_XINCREF(kwds1);
1773 if (rqd_kwds && *kwds)
1774 for (i = 0, p = kwd_list; *p; i++, p++)
1775 if (rqd_kwds[i] && !PyDict_GetItemString(*kwds, *p))
1776 goto missing_kwarg;
1777 }
1778
1779 *args = args1;
1780 *kwds = kwds1;
1781 return 0;
1782 missing_kwarg:
1783 PyErr_Format(PyExc_TypeError,
1784 "required keyword argument '%s' is missing", *p);
1785 bad:
1786 Py_XDECREF(args1);
1787 Py_XDECREF(kwds1);
1788 if (args2) {
1789 Py_XDECREF(*args2);
1790 }
1791 if (kwds2) {
1792 Py_XDECREF(*kwds2);
1793 }
1794 return -1;
1795 }
1796
1797 static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list) {
1798 PyObject *__import__ = 0;
1799 PyObject *empty_list = 0;
1800 PyObject *module = 0;
1801 PyObject *global_dict = 0;
1802 PyObject *empty_dict = 0;
1803 PyObject *list;
1804 __import__ = PyObject_GetAttrString(__pyx_b, "__import__");
1805 if (!__import__)
1806 goto bad;
1807 if (from_list)
1808 list = from_list;
1809 else {
1810 empty_list = PyList_New(0);
1811 if (!empty_list)
1812 goto bad;
1813 list = empty_list;
1814 }
1815 global_dict = PyModule_GetDict(__pyx_m);
1816 if (!global_dict)
1817 goto bad;
1818 empty_dict = PyDict_New();
1819 if (!empty_dict)
1820 goto bad;
1821 module = PyObject_CallFunction(__import__, "OOOO",
1822 name, global_dict, empty_dict, list);
1823 bad:
1824 Py_XDECREF(empty_list);
1825 Py_XDECREF(__import__);
1826 Py_XDECREF(empty_dict);
1827 return module;
1828 }
1829
1830 static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name) {
1831 PyObject *result;
1832 result = PyObject_GetAttr(dict, name);
1833 if (!result)
1834 PyErr_SetObject(PyExc_NameError, name);
1835 return result;
1836 }
1837
1838 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb) {
1839 Py_XINCREF(type);
1840 Py_XINCREF(value);
1841 Py_XINCREF(tb);
1842 /* First, check the traceback argument, replacing None with NULL. */
1843 if (tb == Py_None) {
1844 Py_DECREF(tb);
1845 tb = 0;
1846 }
1847 else if (tb != NULL && !PyTraceBack_Check(tb)) {
1848 PyErr_SetString(PyExc_TypeError,
1849 "raise: arg 3 must be a traceback or None");
1850 goto raise_error;
1851 }
1852 /* Next, replace a missing value with None */
1853 if (value == NULL) {
1854 value = Py_None;
1855 Py_INCREF(value);
1856 }
1857 #if PY_VERSION_HEX < 0x02050000
1858 if (!PyClass_Check(type))
1859 #else
1860 if (!PyType_Check(type))
1861 #endif
1862 {
1863 /* Raising an instance. The value should be a dummy. */
1864 if (value != Py_None) {
1865 PyErr_SetString(PyExc_TypeError,
1866 "instance exception may not have a separate value");
1867 goto raise_error;
1868 }
1869 /* Normalize to raise <class>, <instance> */
1870 Py_DECREF(value);
1871 value = type;
1872 #if PY_VERSION_HEX < 0x02050000
1873 if (PyInstance_Check(type)) {
1874 type = (PyObject*) ((PyInstanceObject*)type)->in_class;
1875 Py_INCREF(type);
1876 }
1877 else {
1878 PyErr_SetString(PyExc_TypeError,
1879 "raise: exception must be an old-style class or instance");
1880 goto raise_error;
1881 }
1882 #else
1883 type = (PyObject*) type->ob_type;
1884 Py_INCREF(type);
1885 if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_Ba seException)) {
1886 PyErr_SetString(PyExc_TypeError,
1887 "raise: exception class must be a subclass of BaseException" );
1888 goto raise_error;
1889 }
1890 #endif
1891 }
1892 PyErr_Restore(type, value, tb);
1893 return;
1894 raise_error:
1895 Py_XDECREF(value);
1896 Py_XDECREF(type);
1897 Py_XDECREF(tb);
1898 return;
1899 }
1900
1901 static void __Pyx_UnpackError(void) {
1902 PyErr_SetString(PyExc_ValueError, "unpack sequence of wrong size");
1903 }
1904
1905 static PyObject *__Pyx_UnpackItem(PyObject *iter) {
1906 PyObject *item;
1907 if (!(item = PyIter_Next(iter))) {
1908 if (!PyErr_Occurred())
1909 __Pyx_UnpackError();
1910 }
1911 return item;
1912 }
1913
1914 static int __Pyx_EndUnpack(PyObject *iter) {
1915 PyObject *item;
1916 if ((item = PyIter_Next(iter))) {
1917 Py_DECREF(item);
1918 __Pyx_UnpackError();
1919 return -1;
1920 }
1921 else if (!PyErr_Occurred())
1922 return 0;
1923 else
1924 return -1;
1925 }
1926
1927 static int __Pyx_InternStrings(__Pyx_InternTabEntry *t) {
1928 while (t->p) {
1929 *t->p = PyString_InternFromString(t->s);
1930 if (!*t->p)
1931 return -1;
1932 ++t;
1933 }
1934 return 0;
1935 }
1936
1937 static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
1938 while (t->p) {
1939 *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
1940 if (!*t->p)
1941 return -1;
1942 ++t;
1943 }
1944 return 0;
1945 }
1946
1947 #include "compile.h"
1948 #include "frameobject.h"
1949 #include "traceback.h"
1950
1951 static void __Pyx_AddTraceback(char *funcname) {
1952 PyObject *py_srcfile = 0;
1953 PyObject *py_funcname = 0;
1954 PyObject *py_globals = 0;
1955 PyObject *empty_tuple = 0;
1956 PyObject *empty_string = 0;
1957 PyCodeObject *py_code = 0;
1958 PyFrameObject *py_frame = 0;
1959
1960 py_srcfile = PyString_FromString(__pyx_filename);
1961 if (!py_srcfile) goto bad;
1962 py_funcname = PyString_FromString(funcname);
1963 if (!py_funcname) goto bad;
1964 py_globals = PyModule_GetDict(__pyx_m);
1965 if (!py_globals) goto bad;
1966 empty_tuple = PyTuple_New(0);
1967 if (!empty_tuple) goto bad;
1968 empty_string = PyString_FromString("");
1969 if (!empty_string) goto bad;
1970 py_code = PyCode_New(
1971 0, /*int argcount,*/
1972 0, /*int nlocals,*/
1973 0, /*int stacksize,*/
1974 0, /*int flags,*/
1975 empty_string, /*PyObject *code,*/
1976 empty_tuple, /*PyObject *consts,*/
1977 empty_tuple, /*PyObject *names,*/
1978 empty_tuple, /*PyObject *varnames,*/
1979 empty_tuple, /*PyObject *freevars,*/
1980 empty_tuple, /*PyObject *cellvars,*/
1981 py_srcfile, /*PyObject *filename,*/
1982 py_funcname, /*PyObject *name,*/
1983 __pyx_lineno, /*int firstlineno,*/
1984 empty_string /*PyObject *lnotab*/
1985 );
1986 if (!py_code) goto bad;
1987 py_frame = PyFrame_New(
1988 PyThreadState_Get(), /*PyThreadState *tstate,*/
1989 py_code, /*PyCodeObject *code,*/
1990 py_globals, /*PyObject *globals,*/
1991 0 /*PyObject *locals*/
1992 );
1993 if (!py_frame) goto bad;
1994 py_frame->f_lineno = __pyx_lineno;
1995 PyTraceBack_Here(py_frame);
1996 bad:
1997 Py_XDECREF(py_srcfile);
1998 Py_XDECREF(py_funcname);
1999 Py_XDECREF(empty_tuple);
2000 Py_XDECREF(empty_string);
2001 Py_XDECREF(py_code);
2002 Py_XDECREF(py_frame);
2003 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698