[Twisted-Python] Mixmaster Architecture

Moshe Zadka twisted at zadka.site.co.il
Thu Nov 20 12:47:06 EST 2003


On 20 Nov 2003, "Mark Evans" <2s7l3way02 at sneakemail.com> wrote:

> Here's an architecture question for Twisted Matrix gurus.
> I need to implement a "mixmaster" scheme, as follows:
> 
>                            |--> Remote client A
>         UDP            TCP |
> Server <---> Mixmaster <---|--> Remote client B
>                            |
>                            |--> Remote client C
>                            |
>                            ... (etc.)
> 

No this is the wrong picture. Here's a right picture:

           |<--|              |--> Remote client A
        UDP|   |          TCP |
Server <---|<--|Mixmaster<----|--> Remote client B
           |   |              |
           |<--|              |--> Remote client C
           |   |              |
                             ... (etc.)

so you'll want something like

class MixmasterProtocol(protocol.Protocol) # the TCP side

    def connectionMade(self):
        self.udp = p = protocol.ConnectedDatagramProtocol()
        p.datagramReceived = self.datagramReceived
        self.server = reactor.connectUDP('127.0.0.1', PORT, p)

    def connectionLost(self):
        self.server.stopListening()

    def dataReceived(self, data):
        pass # handle data from TCP client, maybe use self.udp.transport.write

    def datagramReceived(self, data):
        pass # handle data from server, maybe use self.transport.write
 
> The most important client type uses Telnet (raw).

Make up your mind, telnet or raw? a Line-based protocol?




More information about the Twisted-Python mailing list