Skip to content
Snippets Groups Projects
Commit 17d34f14 authored by Hendrik Buschmeier's avatar Hendrik Buschmeier
Browse files

It's now possible to add cat interests to an InputBuffer at runtime.

parent 7af4b153
No related branches found
No related tags found
No related merge requests found
...@@ -851,7 +851,7 @@ class InputBuffer(Buffer): ...@@ -851,7 +851,7 @@ class InputBuffer(Buffer):
self._category_interests = [] self._category_interests = []
if category_interests is not None: if category_interests is not None:
for cat in category_interests: for cat in category_interests:
self._create_category_listener_if_needed(cat) self._add_category_listener(cat)
def _get_remote_server(self, iu): def _get_remote_server(self, iu):
'''Return (or create, store and return) a remote server.''' '''Return (or create, store and return) a remote server.'''
...@@ -862,15 +862,14 @@ class InputBuffer(Buffer): ...@@ -862,15 +862,14 @@ class InputBuffer(Buffer):
self._remote_server_store[iu.owner_name] = remote_server self._remote_server_store[iu.owner_name] = remote_server
return 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.''' '''Return (or create, store and return) a category listener.'''
if iu_category in self._listener_store: return self._informer_store[iu_category] 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 = rsb.createListener(rsb.Scope("/ipaaca/category/"+str(iu_category)), config=self._participant_config)
cat_listener.addHandler(self._handle_iu_events) cat_listener.addHandler(self._handle_iu_events)
self._listener_store[iu_category] = cat_listener self._listener_store[iu_category] = cat_listener
self._category_interests.append(iu_category) self._category_interests.append(iu_category)
logger.info("Added listener in scope "+"/ipaaca/category/"+iu_category) logger.info("Added listener in scope "+"/ipaaca/category/"+iu_category)
return cat_listener
def _handle_iu_events(self, event): def _handle_iu_events(self, event):
'''Dispatch incoming IU events. '''Dispatch incoming IU events.
...@@ -919,6 +918,10 @@ class InputBuffer(Buffer): ...@@ -919,6 +918,10 @@ class InputBuffer(Buffer):
else: else:
logger.warning('Warning: _handle_iu_events failed to handle an object of type '+str(type_)) 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): class OutputBuffer(Buffer):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment