[Twisted-Python] two twisted clients, how can I trigger the other one's callback in one's callback?
Arnar Birgisson
arnarbi at gmail.com
Wed Jun 20 05:52:06 MDT 2007
On 6/20/07, slowtech chen <slowtech.chen at yahoo.com> wrote:
> I have 2 clients, one gets a message from a server, once I get
> the message, I want to send it with the other client to another
> server. how can i do this? can I add some customized events
> and notice the other client? Thanks.
Are they both running in the same process?
This is my first non-question post on this list, so please forgive me
if I'm giving bad advice - hopefully someone will correct me if I am.
If they're both in the same process you can just make calls between
them normally.
from twisted.internet.protocol import Protocol
from twisted.internet import reactor, protocol
class YourProtocol(Protocol):
def connectionMade(self):
self.factory.connections.append(self)
print "connected"
def connectionLost(self, reason):
self.factory.connections.remove(self)
print "disconnected"
def dataReceived(self, data):
# repeat the data to all other connections
print "relaying data"
for conn in self.factory.connections:
if conn != self:
conn.transport.write(data)
class YourClientFactory(protocol.ClientFactory):
protocol = YourProtocol
def __init__(self):
self.connections = []
if __name__ == '__main__':
f = YourClientFactory()
reactor.connectTCP("hostname1", 10001, f)
reactor.connectTCP("hostname2", 10002, f)
reactor.run()
More information about the Twisted-Python
mailing list