~vishvananda/nova/network-refactor

« back to all changes in this revision

Viewing changes to vendor/Twisted-10.0.0/doc/core/howto/listings/pb/cache_sender.py

  • Committer: Jesse Andrews
  • Date: 2010-05-28 06:05:26 UTC
  • Revision ID: git-v1:bf6e6e718cdc7488e2da87b21e258ccc065fe499
initial commit

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/env python
 
2
 
 
3
# Copyright (c) 2009 Twisted Matrix Laboratories.
 
4
# See LICENSE for details.
 
5
 
 
6
from twisted.spread import pb, jelly
 
7
from twisted.python import log
 
8
from twisted.internet import reactor
 
9
from cache_classes import MasterDuckPond
 
10
 
 
11
class Sender:
 
12
    def __init__(self, pond):
 
13
        self.pond = pond
 
14
 
 
15
    def phase1(self, remote):
 
16
        self.remote = remote
 
17
        d = remote.callRemote("takePond", self.pond)
 
18
        d.addCallback(self.phase2).addErrback(log.err)
 
19
    def phase2(self, response):
 
20
        self.pond.addDuck("ugly duckling")
 
21
        self.pond.count()
 
22
        reactor.callLater(1, self.phase3)
 
23
    def phase3(self):
 
24
        d = self.remote.callRemote("checkDucks")
 
25
        d.addCallback(self.phase4).addErrback(log.err)
 
26
    def phase4(self, dummy):
 
27
        self.pond.removeDuck("one duck")
 
28
        self.pond.count()
 
29
        self.remote.callRemote("checkDucks")
 
30
        d = self.remote.callRemote("ignorePond")
 
31
        d.addCallback(self.phase5)
 
32
    def phase5(self, dummy):
 
33
        d = self.remote.callRemote("shutdown")
 
34
        d.addCallback(self.phase6)
 
35
    def phase6(self, dummy):
 
36
        reactor.stop()
 
37
 
 
38
def main():
 
39
    master = MasterDuckPond(["one duck", "two duck"])
 
40
    master.count()
 
41
 
 
42
    sender = Sender(master)
 
43
    factory = pb.PBClientFactory()
 
44
    reactor.connectTCP("localhost", 8800, factory)
 
45
    deferred = factory.getRootObject()
 
46
    deferred.addCallback(sender.phase1)
 
47
    reactor.run()
 
48
 
 
49
if __name__ == '__main__':
 
50
    main()