~justin-fathomdb/nova/justinsb-openstack-api-volumes

« back to all changes in this revision

Viewing changes to vendor/Twisted-10.0.0/twisted/internet/iocpreactor/iocpsupport/acceptex.pxi

  • Committer: Jesse Andrews
  • Date: 2010-05-28 06:05:26 UTC
  • Revision ID: git-v1:bf6e6e718cdc7488e2da87b21e258ccc065fe499
initial commit

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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, &locallen, &remoteaddr, &remotelen)
 
37
    return remoteaddr.sa_family, _makesockaddr(localaddr, locallen), _makesockaddr(remoteaddr, remotelen)
 
38