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)