From 4dd943b04d2b4be93f43bce34acb603d21dfb90f Mon Sep 17 00:00:00 2001 From: Johannes Wienke Date: Tue, 22 Jul 2014 12:19:12 +0200 Subject: [PATCH] Allow to specify converters Adds keyword arguments to pass through a converter selection strategy to be used when receiving events from bag. --- rsbag/__init__.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/rsbag/__init__.py b/rsbag/__init__.py index 6d9a95f..8e34f1f 100644 --- a/rsbag/__init__.py +++ b/rsbag/__init__.py @@ -102,13 +102,15 @@ class DataSequence (ItemSequence): return self.server.get.async().get(timeout = self.timeout) class Connection (object): - def __init__(self, port, controlScope, listenScope): + def __init__(self, port, controlScope, listenScope, converters = None): self.__logger = getLoggerByClass(self.__class__) config = rsb.ParticipantConfig.fromDict({ 'transport.socket.enabled': '1', 'transport.socket.host': 'localhost', 'transport.socket.port': '%s' % port, 'transport.socket.server': '0' }) + if converters: + config.getTransport('socket').setConverters(converters) self.__server = rsb.createRemoteServer(scope = controlScope, config = config) self.__listener = rsb.createListener(scope = listenScope, config = config) @@ -167,7 +169,8 @@ class Connection (object): class Bag (Connection): def __init__(self, file, channels = None, - bagPlay = prefix + '/bin/bag-play'): + bagPlay = prefix + '/bin/bag-play', + converters = None): self.__logger = getLoggerByClass(self.__class__) self.__file = file @@ -194,7 +197,7 @@ class Bag (Connection): self.__process = subprocess.Popen(command, close_fds = True) time.sleep(2) - super(Bag, self).__init__(self.__port, self.__controlScope, self.__listenScope) + super(Bag, self).__init__(self.__port, self.__controlScope, self.__listenScope, converters=converters) def _cleanup(self): super(self.__class__, self)._cleanup() @@ -233,7 +236,8 @@ class Bag (Connection): return '<%s for "%s" at %s>' \ % (type(self).__name__, string, id(self)) -def openBag(file, channels = None, bagPlay = prefix + '/bin/bag-play'): +def openBag(file, channels = None, bagPlay = prefix + '/bin/bag-play', + converters = None): """ Open B{file}, potentially selecting B{channels}, for processing and return a L{Bag} object representing the log file. @@ -247,9 +251,12 @@ def openBag(file, channels = None, bagPlay = prefix + '/bin/bag-play'): @param bagPlay: If supplied, filename of the bag-play binary that should be used. @type bagPlay: str + @param converters: converters to use for receiving events. Defaults to the + converters registered in the RSB repository + @type converters: ConverterSelectionStrategy or None @rtype: Bag @author: jmoringe """ - return Bag(file, channels = channels, bagPlay = bagPlay) + return Bag(file, channels = channels, bagPlay = bagPlay, converters = converters) -- 1.7.9.5