我正在开发一个基于Twisted框架的P2P应用程序。因此,我可以有传入和传出连接。有没有简单的方法来区分它们?目前我只创建另一个工厂,将连接标记为传出,并将所有工厂调用委托给原始工厂,但必须有一种更简单的方法。在
class OutgoingProtocolFactory(MyProtocolFactory):
"""
A rather simple factory that is used to earmark connections as outgoing.
"""
def __init__(self, parentFactory):
self.factory = parentFactory
def buildProtocol(self, addr):
connection = MyProtocolFactory.buildProtocol(self.factory, addr)
connection.factory = self.factory
connection.incoming = False
return connection
def clientConnectionFailed(self, connector, reason):
self.factory.clientConnectionFailed(connector, reason)
def clientConnectionLost(self, connector, reason):
self.factory.clientConnectionLost(connector, reason)
有什么想法吗?在
Twisted中包含的任何工厂构造的每个协议实例都会得到一个自由的
factory
属性,该属性将指向创建它们的工厂。在按照惯例,接受的(服务器)连接有一个
ServerFactory
(或子类)实例作为它们的工厂,连接的(客户机)连接有一个ClientFactory
(或子类)实例。在但是,如果你真的希望你的代码是完全通用的,你不能依赖于它,最好自己跟踪它,就像你现在正在做的那样。在
如果当前用于将调用从一个工厂转发到另一个工厂的代码比必要的代码更麻烦,下面是一个简单的示例:
如果这对你来说还是太复杂了,那我不知道该说什么。我不够聪明,想不出更简单的解决办法。在
相关问题 更多 >
编程相关推荐