1
# Copyright (c) 2008 Divmod. See LICENSE for details.
5
from twisted.internet.defer import Deferred, gatherResults
6
from twisted.internet.protocol import ClientCreator
7
from twisted.protocols.amp import AMP
9
from epsilon.react import react
10
from epsilon.amprouter import Router
12
from route_setup import connect
13
from route_server import Count
16
def display(value, id):
20
class CountClient(AMP):
21
def __init__(self, identifier):
23
self.identifier = identifier
24
self.finished = Deferred()
26
def startReceivingBoxes(self, sender):
27
AMP.startReceivingBoxes(self, sender)
30
for i in range(random.randrange(1, 5)):
31
d = self.callRemote(Count)
32
d.addCallback(display, self.identifier)
34
gatherResults(counts).chainDeferred(self.finished)
38
def makeRoutes(proto, router):
39
router.bindRoute(proto, None).connectTo(None)
43
client = CountClient(i)
44
finish.append(connect(proto, router, client))
45
finish.append(client.finished)
46
return gatherResults(finish)
52
cc = ClientCreator(reactor, AMP, router)
53
d = cc.connectTCP('localhost', 7805)
54
d.addCallback(makeRoutes, router)
58
if __name__ == '__main__':
59
from twisted.internet import reactor
60
react(reactor, main, [])