Skip to content
Snippets Groups Projects
Commit b1e08362 authored by Eric S. Raymond's avatar Eric S. Raymond
Browse files

Initial creation of session object.

parent 7087eeac
No related branches found
No related tags found
No related merge requests found
...@@ -8,13 +8,22 @@ and relays to IRC channels. ...@@ -8,13 +8,22 @@ and relays to IRC channels.
""" """
import os, sys, json, irclib, getopt import os, sys, json, irclib, getopt
class Session:
"IRC session and message queue processing."
def __init__(self, channel):
self.channel = channel
self.queue = []
def enqueue(self, message):
"Enque a message for transmission."
self.queue.append(message)
class Irker: class Irker:
"Persistent IRC multiplexer." "Persistent IRC multiplexer."
def __init__(self): def __init__(self):
self.botpool = {} self.sessions = {}
def logerr(self, errmsg): def logerr(self, errmsg):
"Log a processing error." "Log a processing error."
sys.stderr.write(errmsg) sys.stderr.write("irker: " + errmsg + "\n")
def run(self, ifp): def run(self, ifp):
"Accept JSON relay requests from specified stream." "Accept JSON relay requests from specified stream."
while True: while True:
...@@ -24,11 +33,18 @@ class Irker: ...@@ -24,11 +33,18 @@ class Irker:
try: try:
request = json.loads(inp.strip()) request = json.loads(inp.strip())
except ValueError: except ValueError:
self.logerr("irker: can't recognize JSON on input.\n") self.logerr("can't recognize JSON on input.")
break break
self.relay(request) self.relay(request)
def relay(self, request): def relay(self, request):
print request if "channel" not in request or "message" not in request:
self.logerr("ill-formed reqest")
else:
channel = request['channel']
message = request['message']
if channel not in self.sessions:
self.sessions[channel] = Session(channel)
self.sessions[channel].enqueue(message)
if __name__ == '__main__': if __name__ == '__main__':
irker = Irker() irker = Irker()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment