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

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

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 # Copyright (c) 2008 Twisted Matrix Laboratories.
2 # See LICENSE for details.
3
4
5 def recv(long s, object bufflist, object obj, unsigned long flags = 0):
6 cdef int rc, buffcount, i, res
7 cdef myOVERLAPPED *ov
8 cdef WSABUF *ws_buf
9 cdef unsigned long bytes
10 cdef PyObject **buffers
11
12 bufflist = PySequence_Fast(bufflist, 'second argument needs to be a list')
13 buffcount = PySequence_Fast_GET_SIZE(bufflist)
14 buffers = PySequence_Fast_ITEMS(bufflist)
15
16 ws_buf = <WSABUF *>PyMem_Malloc(buffcount*sizeof(WSABUF))
17
18 try:
19 for i from 0 <= i < buffcount:
20 PyObject_AsWriteBuffer(<object>buffers[i], <void **>&ws_buf[i].buf, <int *>&ws_buf[i].len)
21
22 ov = makeOV()
23 if obj is not None:
24 ov.obj = <PyObject *>obj
25
26 rc = WSARecv(s, ws_buf, buffcount, &bytes, &flags, <OVERLAPPED *>ov, NUL L)
27
28 if rc == SOCKET_ERROR:
29 rc = WSAGetLastError()
30 if rc != ERROR_IO_PENDING:
31 return rc, 0
32
33 Py_XINCREF(obj)
34 return rc, bytes
35 finally:
36 PyMem_Free(ws_buf)
37
38 def recvfrom(long s, object buff, object addr_buff, object obj, unsigned long fl ags = 0):
39 cdef int rc, fromlen
40 cdef myOVERLAPPED *ov
41 cdef WSABUF ws_buf
42 cdef unsigned long bytes
43 cdef sockaddr *fromaddr
44
45 PyObject_AsWriteBuffer(buff, <void **>&ws_buf.buf, <int *>&ws_buf.len)
46 PyObject_AsWriteBuffer(addr_buff, <void **>&fromaddr, &fromlen)
47
48 ov = makeOV()
49 if obj is not None:
50 ov.obj = <PyObject *>obj
51
52 rc = WSARecvFrom(s, &ws_buf, 1, &bytes, &flags, fromaddr, &fromlen, <OVERLAP PED *>ov, NULL)
53
54 if rc == SOCKET_ERROR:
55 rc = WSAGetLastError()
56 if rc != ERROR_IO_PENDING:
57 return rc, 0
58
59 Py_XINCREF(obj)
60 return rc, bytes
61
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698