"""
Sockect Object/API
"""
ctypedef int socket_t
cdef class socket :
"""
Represents a single OS-level socket
>>> from qmsk.net.socket import address as 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
>>> s1 = socket(AF_INET, SOCK_STREAM); s2 = socket(AF_INET, SOCK_STREAM)
>>> s1.listen(1);
>>> s2.connect(s1.getsockname())
>>> s12, s12_addr = s1.accept()
>>> s12_addr == s12.getpeername() == s2.getsockname()
True
>>> s1.close(); s2.close()
"""
cdef readonly socket_t fd