X-Git-Url: http://git.tremily.us/?a=blobdiff_plain;f=irkerd;h=40cef48e50c348db90c648209f21bae61ec0166f;hb=f51c7345dd4cfc7f0cb0f2899425a5e8d820ac43;hp=54b585eea15a7c16dd304f3cf923a8f1ca12a5ad;hpb=05c2dfb6b96979ae15b6667e1625d434b8a1dd72;p=irker.git diff --git a/irkerd b/irkerd index 54b585e..40cef48 100755 --- a/irkerd +++ b/irkerd @@ -136,7 +136,6 @@ class IRCClient(): (insocks, _o, _e) = select.select(sockets, [], [], timeout) for s in insocks: connmap[s.fileno()].consume() - else: time.sleep(timeout) @@ -684,11 +683,13 @@ class Irker: self.irc.add_event_handler("disconnect", self._handle_disconnect) self.irc.add_event_handler("kick", self._handle_kick) self.irc.add_event_handler("every_raw_message", self._handle_every_raw_message) + self.servers = {} + self.until = None + def thread_launch(self): thread = threading.Thread(target=self.irc.spin) thread.setDaemon(True) self.irc._thread = thread thread.start() - self.servers = {} def logerr(self, errmsg): "Log a processing error." sys.stderr.write("irkerd: " + errmsg + "\n") @@ -749,6 +750,9 @@ class Irker: with open(logfile, "a") as logfp: logfp.write("%03f|%s|%s\n" % \ (time.time(), event.source, event.arguments[0])) + if self.until is not None: + if self.until == event.arguments[0]: + raise SystemExit, 1 def pending(self): "Do we have any pending message traffic?" return [k for (k, v) in self.servers.items() if v.pending()] @@ -870,8 +874,10 @@ if __name__ == '__main__': if immediate: (to, privmsg) = val.split(",") irker.handle('{"to":"%s","privmsg":"%s"}' % (to, privmsg)) + irker.until = privmsg irker.irc.spin() else: + irker.thread_launch() try: tcpserver = SocketServer.TCPServer((HOST, PORT), IrkerTCPHandler) udpserver = SocketServer.UDPServer((HOST, PORT), IrkerUDPHandler)