Exemplo n.º 1
0
def unpack_sockaddr(c_sockaddr):
    if c_sockaddr.sa_family == socket.AF_INET:
        c_sockaddr_in4 = ffi.cast('struct fatuv_sockaddr_in*', c_sockaddr)
        c_host = ffi.new('char[16]')
        port = socket.ntohs(c_sockaddr_in4.sin_port)
        lib.fatuv_ip4_name(c_sockaddr_in4, c_host, 16)
        return Address4(ffi.string(c_host), port)
    elif c_sockaddr.sa_family == socket.AF_INET6:
        #not support
        return None
Exemplo n.º 2
0
    def getpeername(self):
        assert self.handle
        if self.closing:
            raise error.HandleClosedError()
        ip = ffi.new('char[16]')
        port = ffi.new('int*')

        err = uv_tcp_v4_getpeername(self.handle, ip, port)
        if err < 0:
            raise TCPError((err, get_strerror(err)))

        return six.ensure_str(ffi.string(ip)), port[0]
Exemplo n.º 3
0
def unpack_addrinfo(c_addrinfo):
    items, c_next = [], c_addrinfo
    while c_next:
        family = c_next.ai_family
        socktype = c_next.ai_socktype
        protocol = c_next.ai_protocol
        if c_next.ai_canonname:
            canonname = ffi.string(c_next.ai_canonname)
        else:
            canonname = None
        address = unpack_sockaddr(c_next.ai_addr) if c_next.ai_addr else None
        items.append(AddrInfo(family, socktype, protocol, canonname, address))
        c_next = c_next.ai_next
    return items
Exemplo n.º 4
0
def fatuv_fs_event_callback(fs_event_handle, c_filename, events, status):
    ptr = uv_get_pyobj(fs_event_handle)
    obj = ffi.from_handle(ptr)
    filename = ffi.string(c_filename).decode()
    obj._call_fs_event_callback(filename, events, status)
Exemplo n.º 5
0
def get_strerror(err):
    ptr = uv_strerror(err)
    return ffi.string(ptr)
Exemplo n.º 6
0
def get_err_name(err):
    ptr = uv_err_name(err)
    return ffi.string(ptr)