OLD | NEW |
| (Empty) |
1 # Copyright (c) 2008 Twisted Matrix Laboratories. | |
2 # See LICENSE for details. | |
3 | |
4 | |
5 def accept(long listening, long accepting, object buff, object obj): | |
6 cdef unsigned long bytes | |
7 cdef int size, rc | |
8 cdef void *mem_buffer | |
9 cdef myOVERLAPPED *ov | |
10 | |
11 PyObject_AsWriteBuffer(buff, &mem_buffer, &size) | |
12 | |
13 ov = makeOV() | |
14 if obj is not None: | |
15 ov.obj = <PyObject *>obj | |
16 | |
17 rc = lpAcceptEx(listening, accepting, mem_buffer, 0, size / 2, size / 2, | |
18 &bytes, <OVERLAPPED *>ov) | |
19 if not rc: | |
20 rc = WSAGetLastError() | |
21 if rc != ERROR_IO_PENDING: | |
22 return rc | |
23 | |
24 # operation is in progress | |
25 Py_XINCREF(obj) | |
26 return rc | |
27 | |
28 def get_accept_addrs(long s, object buff): | |
29 cdef WSAPROTOCOL_INFO wsa_pi | |
30 cdef int size, locallen, remotelen | |
31 cdef void *mem_buffer | |
32 cdef sockaddr *localaddr, *remoteaddr | |
33 | |
34 PyObject_AsReadBuffer(buff, &mem_buffer, &size) | |
35 | |
36 lpGetAcceptExSockaddrs(mem_buffer, 0, size / 2, size / 2, &localaddr, &local
len, &remoteaddr, &remotelen) | |
37 return remoteaddr.sa_family, _makesockaddr(localaddr, locallen), _makesockad
dr(remoteaddr, remotelen) | |
38 | |
OLD | NEW |