qmsk/net/transport/client.py
author Tero Marttila <terom@fixme.fi>
Mon, 31 Aug 2009 22:19:16 +0300
branchconnect-async
changeset 45 bb49bf8222ed
parent 28 020c89baaa33
permissions -rw-r--r--
initial async connect attempt
28
020c89baaa33 [transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     1
"""
020c89baaa33 [transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     2
    Abstract Client interface
020c89baaa33 [transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     3
"""
020c89baaa33 [transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     4
020c89baaa33 [transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     5
class Client (object) :
020c89baaa33 [transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     6
    """
020c89baaa33 [transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     7
        A Client establishes a connection to some remote Service.
020c89baaa33 [transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     8
        
020c89baaa33 [transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     9
        This is an abstract base class that is further impemented by e.g. TCP or SSL.
020c89baaa33 [transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    10
020c89baaa33 [transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    11
        Note that a Client behaves more like a factory, such that the Client itself is not a Transport, one must instead
020c89baaa33 [transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    12
        call .connect(), rather like one must call Service.accept().
020c89baaa33 [transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    13
    """
020c89baaa33 [transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    14
020c89baaa33 [transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    15
    def __init__ (self, endpoint) :
020c89baaa33 [transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    16
        """
020c89baaa33 [transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    17
            Connect to the given remote endpoint.
020c89baaa33 [transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    18
020c89baaa33 [transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    19
                endpoint        - the remote Endpoint to connect to
020c89baaa33 [transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    20
        """
020c89baaa33 [transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    21
020c89baaa33 [transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    22
        raise NotImplementedError()
020c89baaa33 [transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    23
020c89baaa33 [transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    24
    def connect (self, cls=None) :
020c89baaa33 [transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    25
        """
020c89baaa33 [transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    26
            Perform the connect operation, returning a new Transport.
020c89baaa33 [transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    27
                
020c89baaa33 [transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    28
                cls         - optional transport-specific type to use for the new connection.
020c89baaa33 [transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    29
        """
020c89baaa33 [transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    30
020c89baaa33 [transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    31
        raise NotImplementedError()
020c89baaa33 [transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    32
45
bb49bf8222ed initial async connect attempt
Tero Marttila <terom@fixme.fi>
parents: 28
diff changeset
    33
    def connect_async (self, cls=None, reactor=None) :
bb49bf8222ed initial async connect attempt
Tero Marttila <terom@fixme.fi>
parents: 28
diff changeset
    34
        raise NotImplementedError()
bb49bf8222ed initial async connect attempt
Tero Marttila <terom@fixme.fi>
parents: 28
diff changeset
    35