Initial import to Tizen
[profile/ivi/python-twisted.git] / doc / core / howto / tutorial / listings / finger / finger08.py
1 # Read username, output from non-empty factory, drop connections
2 # Use deferreds, to minimize synchronicity assumptions
3
4 from twisted.internet import protocol, reactor, defer
5 from twisted.protocols import basic
6
7 class FingerProtocol(basic.LineReceiver):
8     def lineReceived(self, user):
9         d = self.factory.getUser(user)
10
11         def onError(err):
12             return 'Internal error in server'
13         d.addErrback(onError)
14
15         def writeResponse(message):
16             self.transport.write(message + '\r\n')
17             self.transport.loseConnection()
18         d.addCallback(writeResponse)
19
20 class FingerFactory(protocol.ServerFactory):
21     protocol = FingerProtocol
22
23     def __init__(self, **kwargs):
24         self.users = kwargs
25
26     def getUser(self, user):
27         return defer.succeed(self.users.get(user, "No such user"))
28
29 reactor.listenTCP(1079, FingerFactory(moshez='Happy and well'))
30 reactor.run()