qmsk/net/socket/__init__.py
author Tero Marttila <terom@fixme.fi>
Tue, 18 Aug 2009 23:02:30 +0300
changeset 24 f18b5787c46c
parent 12 314d47bdd4d9
child 26 d8a71a675862
permissions -rw-r--r--
reorganize socket, adding af_inet/af_inet6 modules, and moving sctp in
"""
    The low-level OS Socket API and related functionality, covering the Internet layer.

    All functionality provided here aims to be a thin wrapper around the native system API, so for the most part, methods
    map directly to *one* syscall/libc call.

    Provided modules/types:
    
    address:
        Abstract socket addresses.

        sockaddr        - corresponds to the `struct sockaddr` used in socket API calls. This is an abstract type
                          that cannot itself be instantated, see `sockaddr_in`/`sockaddr_in6`/`endpoint`.

        addrinfo        - corresponds to the `struct addrinfo` used by the GAI API. Hold a concrete `sockaddr`

        endpoint        - abstract internet hostname+service address as handled by getaddrinfo. Maps to a series of `addrinfo`'s.
    
    af_inet:
        AF_INET (IPv4) -specific functionality.

        sockaddr_in     - AF_INET sockaddr with addr, port fields

    af_inet6:
        AF_INET6 (IPv6) -specific functionality.

        sockaddr_in6    - AF_INET6 sockaddr with addr, port, flowinfo, scope_id fields
    
    socket:
        Core socket API.

        socket          - socket-related syscalls with a guaranteed 1:1 mapping between methods and library
                          calls.
        
    sctp:
        SCTP-specific socket API

        sctp_socket     - extension of socket.socket to support SCTP-specific socket API extensions
    
    constants:
        Socket-related constants.

        AF_*            - address families
        SOCK_*          - socket types
        IPPROTO_*       - inet protocols
        MSG_*           - send/recv message flags

        etc.
"""

## XXX: these shadow the modules... how do we want to provide these?
#from qmsk.net.socket.address import sockaddr, addrinfo, endpoint
#
#from qmsk.net.socket.af_inet import sockaddr_in
#from qmsk.net.socket.af_inet6 import sockaddr_in6
#
#from qmsk.net.socket.socket import socket
#from qmsk.net.socket.sctp import sctp_socket
#
#from qmsk.net.socket.constants import *
#