--- a/pvl/irk.py Sun Jan 13 03:30:11 2013 +0200
+++ b/pvl/irk.py Sun Jan 13 03:30:49 2013 +0200
@@ -24,6 +24,9 @@
irker.add_option('--irker-notice', action='store_true',
help="Use irker NOTICE")
+ irker.add_option('--irker-part', action='store_true',
+ help="Use irker PART")
+
return irker
def apply (options) :
@@ -32,7 +35,7 @@
"""
# None -> stdout
- return Irker(options.irker, options.irker_notice)
+ return Irker(options.irker, options) # options.irker_*
class Irk (object) :
"""
@@ -113,11 +116,12 @@
A channel on an Irk connection.
"""
- def __init__ (self, irker, target, notice=False) :
+ def __init__ (self, irker, target, notice=None, part=None) :
self.irker = irker
self.target = target
self._notice = notice
+ self._part = part
def join (self) :
log.info("%s", self)
@@ -133,6 +137,14 @@
log.info("%s: %s", self, arg)
self.irker(to=str(self), notice=arg)
+ def part (self, msg='') :
+ log.info("%s: %s", self, msg)
+
+ if self._part :
+ self.irker(to=str(self), part=msg)
+ else :
+ log.warn("%s: no --irker-part")
+
def __call__ (self, *args) :
# default msg policy
if self._notice :
@@ -148,10 +160,15 @@
Reconnecting Irk.
"""
- def __init__ (self, url=None, notice=False) :
+ def __init__ (self, url=None, options=None) :
+ """
+ url - irker to connect to
+ options - irker_* configs
+ """
+
self.url = url
self.targets = {}
- self.notice = notice
+ self.options = options
self.connect()
@@ -181,7 +198,21 @@
"""
if target not in self.targets :
- self.targets[target] = IrkerTarget(self, target, notice=self.notice)
+ self.targets[target] = IrkerTarget(self, target,
+ notice = self.options and self.options.irker_notice,
+ part = self.options and self.options.irker_part,
+ )
self.targets[target].join()
return self.targets[target]
+
+ def __delitem__ (self, target) :
+ """
+ Unbind given target URL.
+ """
+
+ target = self.targets.pop(target)
+ target.part()
+
+ def __iter__ (self) :
+ return iter(self.targets)