您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

扭曲:如何在初始连接时识别协议,然后委派给适当的协议实现?

扭曲:如何在初始连接时识别协议,然后委派给适当的协议实现?

与其在整个协议实现过程中混合决策逻辑,不如将它放在一个地方。

class DecisionProtocol(Protocol):
    def connectionMade(self):
        self.state = "undecided"

    def makeProgressTowardsDecision(self, bytes):
        # Do some stuff, eventually return ProtoA() or ProtoB()

    def dataReceived(self, bytes):
        if self.state == "undecided":
            proto, extra = self.makeProgressTowardsDecision(bytes)
            if proto is not None:
                self.state = "decided"
                self.decidedOnProtocol = proto
                self.decidedOnProtocol.makeConnection(self.transport)
                if extra:
                    self.decidedOnProtocol.dataReceived(extra)

        else:
            self.decidedOnProtocol.dataReceived(bytes)

    def connectionLost(self, reason):
        if self.state == "decided":
            self.decidedOnProtocol.connectionLost(reason)

最终,您可以用更少的样板实现此目的:http ://tm.tl/3204/

其他 2022/1/1 18:47:46 有462人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶