[Twisted-Python] Clean pb solution for two-way object sync?
    Daniel Sank 
    sank.daniel at gmail.com
       
    Thu Sep 26 22:48:14 MDT 2013
    
    
  
Upon re-reading the Cacheable docs I still don't understand how to use
it. Can we take my previous home-brewed example and use that as a
launch point for illustrating how to use Cacheable? Here's the
example.
We assume the client has a PlayerClient instance with .server pointing
to a PlayerServer instance. The PlayerServer has a .client list of
PlayerClients. The code fragments are the methods needed to spawn a
new Agent and hook up the client and server objects.
class PlayerServer(pb.referenceable):
    def newAgent(self, asker):
       """Client told us it wants a new Agent"""
        if self.thisIsLegal():
            a = AgentServer()
            self.agents.append(a)
            for client in self.clients:
                d = client.callRemote("newAgent", a)
                d.addCallback(lambda obj: a.clients.append(obj))
class PlayerClient(bp.referenceable):
    def requestNewAgent(self):
        """Tell the server we want to spawn a new Agent"""
        self.server.callRemote("newAgent", self)
    def newAgent(self, serverObj):
        a = AgentClient()
        self.agents.append(a)
        a.server = serverObj
        return a
How does Cacheable help do this?
    
    
More information about the Twisted-Python
mailing list