Subclasses

Another redeeming part of OOP.

Comments are moderated. It may take a few minutes before your comment appears.
Markdown is supported in your comments.

class Relay(object):
    "Subclass this and flesh it out."
    def __init__(self):
        self.client_setup()
        self.client_connect()
    def client_setup(self, **kwargs):
        "Stuff that gets run once."
        pass
    def client_connect(self, **kwargs):
        "Will be called multiple times, if disconnected."
        pass
    def tick(self):
        "Called every frame from main loop."
        pass
    def get(self):
        "Retrieve one message, or None."
        pass
    def send(self, message):
        "Send a single message."
        pass

class Irc(Relay):
    def client_setup(self):
        self.txq = Queue.Queue()
        self.rxq = Queue.Queue()
        self.irc = irclib.IRC()
        self.server = self.irc.server()
        self.irc.add_global_handler('pubmsg', self.handlePubMessage)
    def client_connect(self):
        self.server.connect(**server_info)
        self.server.join(**channel_info)
    def tick(self):
        # batch send all txq messages
        self.irc.process_once()
    def handlePubMessage(self, connection, event):
        self.rxq.put_nowait(event.something())
    def get(self):
        return self.rxq.get_nowait()
    def send(self, message):
        self.txq.put_nowait(message)
Name:
Mail: (not shown)

Please type this: