Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python
- from twisted.spread import pb
- from twisted.internet import reactor, threads
- from time import sleep
- from twisted.python import util
- from twisted.internet.defer import Deferred
- class TestServer(pb.Root):
- def __init__(self):
- reactor.callLater(1, self.useRef)
- reactor.callLater(3, self.useRef)
- def remote_setRef(self, ref):
- self.ref = ref
- return "True"
- def useRef(self):
- print "SERVER: calling client method test"
- print self.ref
- d = Deferred()
- d.callback('test')
- d.addCallback(self.ref.callRemote)
- d.addErrback(self.useRefEB)
- def useRefCB(self, result):
- print "SERVER: used client method test"
- def useRefEB(self, failure):
- print "SERVER: error in useRef try again later"
- return True
- class TestClient(pb.Root):
- def sendRef(self, root):
- return root.callRemote("setRef", self)
- def remote_test(self):
- print "CLIENT: server called test method"
- factory = pb.PBClientFactory()
- d = factory.getRootObject()
- d.addCallback(lambda root: TestClient().sendRef(root))
- d.addCallback(lambda echo: 'CLIENT: server got my client ref')
- d.addErrback(lambda reason: 'error: '+str(reason.value))
- d.addCallback(util.println)
- reactor.listenTCP(8789, pb.PBServerFactory(TestServer()))
- connector = reactor.connectTCP("localhost", 8789, factory)
- reactor.callLater(2, connector.disconnect)
- reactor.run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement