author | Tero Marttila <terom@fixme.fi> |
Sat, 26 Sep 2009 16:39:20 +0300 | |
changeset 50 | da394bb715af |
parent 28 | 020c89baaa33 |
permissions | -rw-r--r-- |
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 Service 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 ServiceError (Exception) : |
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 |
Service-related error. |
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 |
|
020c89baaa33
[transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
10 |
class Service (object) : |
020c89baaa33
[transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
11 |
""" |
020c89baaa33
[transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
12 |
A Service listens for incoming connections, handing those connections off as separate objects. |
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 |
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
|
15 |
""" |
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 |
def __init__ (self, 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 |
Listen on the given local endpoint. |
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 |
endpoint - the local Endpoint to provide this service on. |
020c89baaa33
[transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
22 |
""" |
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 |
raise NotImplementedError() |
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 |
def accept (self, cls=None) : |
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 |
Accept and return a new Transport object representing a connected remote Client. |
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 |
cls - optional transport-specific type to use for the new connection. |
020c89baaa33
[transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
31 |
""" |
020c89baaa33
[transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
32 |
|
020c89baaa33
[transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
33 |
raise NotImplementedError() |
020c89baaa33
[transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
34 |
|
020c89baaa33
[transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
35 |
def close (self) : |
020c89baaa33
[transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
36 |
""" |
020c89baaa33
[transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
37 |
Explicitly shut down this Service, closing any underlying resources and refusing any new connections. |
020c89baaa33
[transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
38 |
|
020c89baaa33
[transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
39 |
This will happen implicitly if the Service is destroyed, this is just the explicit interface. |
020c89baaa33
[transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
40 |
|
020c89baaa33
[transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
41 |
This invalidates this Service object for future use. |
020c89baaa33
[transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
42 |
|
020c89baaa33
[transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
43 |
This may, in theory, raise an error, which would be supressed if this Service were destroyed. |
020c89baaa33
[transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
44 |
""" |
020c89baaa33
[transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
45 |
|
020c89baaa33
[transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
46 |
raise NotImplementedError() |
020c89baaa33
[transport] initial TCP implementation
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
47 |