pvl/irk.py
changeset 83 1cb48f2ba1e9
parent 80 231d3de7081a
child 111 4b96c153c113
--- a/pvl/irk.py	Fri Jan 11 17:23:49 2013 +0200
+++ b/pvl/irk.py	Fri Jan 11 17:32:35 2013 +0200
@@ -19,6 +19,9 @@
     irker.add_option('--irker', metavar='URL',  default=connect,
             help="Irker daemon URL")
 
+    irker.add_option('--irker-notice',          action='store_true',
+            help="Use irker NOTICE")
+
     return irker
 
 def apply (options) :
@@ -27,7 +30,7 @@
     """
     
     # None -> stdout
-    return Irker(options.irker)
+    return Irker(options.irker, options.irker_notice)
 
 def connect (host=None, port=None, family=socket.AF_UNSPEC, socktype=socket.SOCK_STREAM) :
     """
@@ -132,10 +135,12 @@
         A channel on an Irk connection.
     """
 
-    def __init__ (self, irker, target) :
+    def __init__ (self, irker, target, notice=False) :
         self.irker = irker
         self.target = target
 
+        self._notice = notice
+        
     def join (self) :
         log.info("%s", self)
         self.irker.send(to=str(self), privmsg='')
@@ -145,7 +150,17 @@
             log.info("%s: %s", self, arg)
             self.irker.send(to=str(self), privmsg=arg)
 
-    __call__ = privmsg
+    def notice (self, *args) :
+        for arg in args :
+            log.info("%s: %s", self, arg)
+            self.irker.send(to=str(self), notice=arg)
+
+    def __call__ (self, *args) :
+        # default msg policy
+        if self._notice :
+            return self.notice(*args)
+        else :
+            return self.privmsg(*args)
 
     def __str__ (self) :
         return self.target
@@ -155,13 +170,14 @@
         Reconnecting irker.
     """
 
-    def __init__ (self, url=None) :
+    def __init__ (self, url=None, notice=False) :
         if url :
             self.url = urlparse.urlparse(url)
         else :
             self.url = None
 
         self.targets = {}
+        self.notice = notice
         
         self.connect()
     
@@ -191,7 +207,7 @@
         """
 
         if target not in self.targets :
-            self.targets[target] = IrkerTarget(self, target)
+            self.targets[target] = IrkerTarget(self, target, notice=self.notice)
             self.targets[target].join()
             
         return self.targets[target]