From 17d34f14510d40240efc9e8609a7c4088659fc00 Mon Sep 17 00:00:00 2001 From: Hendrik Buschmeier <hbuschme@TechFak.Uni-Bielefeld.DE> Date: Thu, 14 Jun 2012 16:02:37 +0200 Subject: [PATCH] It's now possible to add cat interests to an InputBuffer at runtime. --- python/src/ipaaca.py | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/python/src/ipaaca.py b/python/src/ipaaca.py index 602243d..af8f3f5 100755 --- a/python/src/ipaaca.py +++ b/python/src/ipaaca.py @@ -851,7 +851,7 @@ class InputBuffer(Buffer): self._category_interests = [] if category_interests is not None: for cat in category_interests: - self._create_category_listener_if_needed(cat) + self._add_category_listener(cat) def _get_remote_server(self, iu): '''Return (or create, store and return) a remote server.''' @@ -862,15 +862,14 @@ class InputBuffer(Buffer): self._remote_server_store[iu.owner_name] = remote_server return remote_server - def _create_category_listener_if_needed(self, iu_category): + def _add_category_listener(self, iu_category): '''Return (or create, store and return) a category listener.''' - if iu_category in self._listener_store: return self._informer_store[iu_category] - cat_listener = rsb.createListener(rsb.Scope("/ipaaca/category/"+str(iu_category)), config=self._participant_config) - cat_listener.addHandler(self._handle_iu_events) - self._listener_store[iu_category] = cat_listener - self._category_interests.append(iu_category) - logger.info("Added listener in scope "+"/ipaaca/category/"+iu_category) - return cat_listener + if iu_category not in self._listener_store: + cat_listener = rsb.createListener(rsb.Scope("/ipaaca/category/"+str(iu_category)), config=self._participant_config) + cat_listener.addHandler(self._handle_iu_events) + self._listener_store[iu_category] = cat_listener + self._category_interests.append(iu_category) + logger.info("Added listener in scope "+"/ipaaca/category/"+iu_category) def _handle_iu_events(self, event): '''Dispatch incoming IU events. @@ -919,6 +918,10 @@ class InputBuffer(Buffer): else: logger.warning('Warning: _handle_iu_events failed to handle an object of type '+str(type_)) + def add_category_interests(self, category_interests): + for interest in category_interests: + self._add_category_listener(interest) + class OutputBuffer(Buffer): -- GitLab