qmsk/net/socket/socket.pxd
author Tero Marttila <terom@fixme.fi>
Sun, 16 Aug 2009 21:54:46 +0300
changeset 13 a1091632a8a7
parent 8 b3880dafbab1
child 21 19d212c948e0
permissions -rw-r--r--
implement __cinit__, shutdown, close, __dealloc__ for socket, and also add a try-except to not leak client sock from accept()
"""
    Sockect Object/API
"""

ctypedef int socket_t

cdef class socket :
    """
        Represents a single OS-level socket
        
        >>> from qmsk.net.socket import addr
        >>> from qmsk.net.socket.constants import *

        >>> s = socket(1337)
        Traceback (most recent call last):
          ...
        OSError: [Errno 97] Address family not supported by protocol

        >>> s = socket(fd=1337)
        >>> s.send('foo')
        Traceback (most recent call last):
          ...
        OSError: [Errno 9] Bad file descriptor

        >>> s = socket(AF_INET, SOCK_STREAM)
        >>> s.bind(addr.sockaddr_in('127.0.0.1', 1337))
        >>> s.listen(1)
        >>> s.listen(0)

        >>> s = socket()
        >>> s.connect(addr.sockaddr_in('127.0.0.1', 1338))
        Traceback (most recent call last):
          ...
        OSError: [Errno 111] Connection refused
        
    """

    cdef readonly socket_t fd