Twisted: Protocol separation
Verfasst: Montag 5. September 2016, 06:10
Ich habe ein kompliziertes Twisted protocol (A) das auf einem anderen (B) aufbaut (von diesem erbt, wie halt bei twisted protocols so üblich).
Jetzt will ich aber B austauschbar machen (so dass mein protocol auch über zb. websocket (C) läuft).
Bsp.
Natürlich kann ich ProtoB in der Vererbung einfach austauschen. Aber das geht ja nicht per Parameter und somit müsste ich sachen copy und pasten.
Man kann auch das eine Objekt an das andere übergeben, aber so richtig schön ist das wegen der gegenseitigen Abhängigkeit auch nicht.
A la:
Und noch dazu ist die Reihenfolge verkehrt rum, aber ich brauch ja am Schluss ein Protokoll was von twisted.Protocol erbt.
Da gibt's doch sicher bei Twisted irgendein standard Pattern wie man das ordentlich macht. Kann mir da jemand helfen?
Jetzt will ich aber B austauschbar machen (so dass mein protocol auch über zb. websocket (C) läuft).
Bsp.
Code: Alles auswählen
class ProtoB(Protocol):
def dataReceived(self, data):
self.recv(data)
def send(self, data):
self.transport.write(data)
class EchoA(ProtoB):
def recv(self, data):
self.send(data)
Man kann auch das eine Objekt an das andere übergeben, aber so richtig schön ist das wegen der gegenseitigen Abhängigkeit auch nicht.
A la:
Code: Alles auswählen
class EchoA:
def recv(self, data):
self.send(data)
class ProtoB(Protocol):
def __init__(self, proto=EchoA()):
self.proto = proto
self.proto.send = self.send
def dataReceived(self, data):
self.proto.recv(data)
def send(self, data):
self.transport.write(data)
Da gibt's doch sicher bei Twisted irgendein standard Pattern wie man das ordentlich macht. Kann mir da jemand helfen?