[ create a new paste ] login | about

Link: http://codepad.org/hjRgPvIn    [ raw code | fork ]

Python, pasted on Aug 20:
#!/usr/bin/env python

from twisted.internet.protocol import Factory, Protocol

from circuits import handler, BaseComponent, Debugger
from circuits.net.sockets import Close, Write, TCPServer


class TwistedTransport(BaseComponent):

    def __init__(self, sock, host, port):
        super(TwistedTransport, self).__init__()

        self.sock = sock
        self.host = host
        self.port = port

    def write(self, data):
        self.fire(Write(self.sock, data))

    def loseConnection(self):
        self.fire(Close(self.sock))


class TwistedProtocol(BaseComponent, Protocol):

    @handler("connect", channel="*")
    def _on_connect(self, sock, host, port):
        self.transport = TwistedTransport(sock, host, port).register(self)
        return self.connectionMade()


class QOTD(TwistedProtocol):

    def connectionMade(self):
        # self.factory was set by the factory's default buildProtocol:
        self.transport.write(self.factory.quote + '\r\n')
        self.transport.loseConnection()


class TwistedFactory(BaseComponent, Factory):

    @handler("started", channel="*")
    def _on_started(self, manager):
        print "Registering protocol...."
        self.protocol = self.protocol().register(self)
        self.protocol.factory = self


class QOTDFactory(TwistedFactory):

    # This will be used by the default buildProtocol to create new protocols:
    protocol = QOTD

    def __init__(self, quote=None):
        super(QOTDFactory, self).__init__()

        self.quote = quote or 'An apple a day keeps the doctor away'


app = (TCPServer(8007) + Debugger())
QOTDFactory("Hello Twisted!").register(app)
app.run()


Create a new paste based on this one


Comments: