From 02185cb58132fff0d3a0deecae69dd57123852bd Mon Sep 17 00:00:00 2001
From: Hendrik Buschmeier <hbuschme@uni-bielefeld.de>
Date: Mon, 26 Jan 2015 16:49:24 +0100
Subject: [PATCH] ipaaca-python: added public method to remove a category
 interest from an InputBuffer.

---
 ipaacalib/python/src/ipaaca/buffer.py | 14 ++++++++++++++
 ipaacatools/scripts/ipaaca-iu-sniffer |  4 ++--
 2 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/ipaacalib/python/src/ipaaca/buffer.py b/ipaacalib/python/src/ipaaca/buffer.py
index bcbf5fd..7283039 100644
--- a/ipaacalib/python/src/ipaaca/buffer.py
+++ b/ipaacalib/python/src/ipaaca/buffer.py
@@ -222,6 +222,13 @@ class InputBuffer(Buffer):
 			self._category_interests.append(iu_category)
 			LOGGER.info("Added listener in scope /ipaaca/channel/" + str(self._channel) + "/category/" + iu_category)
 
+	def _remove_category_listener(self, iu_category):
+		'''Remove the listener for a specific category.'''
+		if iu_category in self._listener_store and iu_category in self._category_interests:
+			del self._listener_store[iu_category]
+			self._category_interests.remove(iu_category)
+			LOGGER.info("Removed listener in scope /ipaaca/channel/" + str(self._channel) + "/category/ " + iu_category)
+
 	def _handle_iu_events(self, event):
 		'''Dispatch incoming IU events.
 
@@ -301,6 +308,13 @@ class InputBuffer(Buffer):
 		else:
 			self._add_category_listener(category_interests)
 
+	def remove_category_interests(self, category_interests):
+		if hasattr(category_interests, '__iter__'):
+			for interest in category_interests:
+				self._remove_category_listener(interest)
+		else:
+			self._remove_category_listener(category_interests)
+
 	def _request_remote_resend(self, iu):
 		remote_server = self._get_remote_server(iu)
 		resend_request = ipaaca_pb2.IUResendRequest()
diff --git a/ipaacatools/scripts/ipaaca-iu-sniffer b/ipaacatools/scripts/ipaaca-iu-sniffer
index 5d954cc..3a98cee 100755
--- a/ipaacatools/scripts/ipaaca-iu-sniffer
+++ b/ipaacatools/scripts/ipaaca-iu-sniffer
@@ -64,8 +64,8 @@ def pretty_printed_dict(d):
 		v = str(v)
 		v2 = v if len(v) <= arguments.max_size else v[:arguments.max_size] + '<excess length omitted>'
 		v2.replace('\\','\\\\').replace('\n', highlight_if_color('\\n'))
-		s += "\t '%s': '%s'," % (highlight_if_color(unicode(k),'1'), unicode(v2))
-	s+='\n}'
+		s += "\t '%s': '%s',\n" % (highlight_if_color(unicode(k),'1'), unicode(v2))
+	s+='}'
 	return s
 
 def pretty_printed_iu_event(iu, event_type, local):
-- 
GitLab