Skip to content

Commit 9bc965b

Browse files
authored
serving multiple classes by one single server
Changes has been made to support serving a list of libraries: robotframework#19
1 parent 904d918 commit 9bc965b

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

src/robotremoteserver.py

+14-6
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,8 @@ def __init__(self, library, host='127.0.0.1', port=8270, port_file=None,
7070
``Stop Remote Server`` keyword and
7171
``stop_remote_server`` XML-RPC method.
7272
"""
73-
self._library = RemoteLibraryFactory(library)
73+
self._library = [RemoteLibraryFactory(library_)
74+
for library_ in library]
7475
self._server = StoppableXMLRPCServer(host, int(port))
7576
self._register_functions(self._server)
7677
self._port_file = port_file
@@ -167,28 +168,35 @@ def stop_remote_server(self, log=True):
167168
return True
168169

169170
def get_keyword_names(self):
170-
return self._library.get_keyword_names() + ['stop_remote_server']
171+
keywords = ['stop_remote_server']
172+
for l in self._library:
173+
keywords += l.get_keyword_names()
174+
return keywords
171175

172176
def run_keyword(self, name, args, kwargs=None):
173177
if name == 'stop_remote_server':
174178
return KeywordRunner(self.stop_remote_server).run_keyword(args, kwargs)
175-
return self._library.run_keyword(name, args, kwargs)
179+
library_ = next(l for l in self._library if name in l._names)
180+
return library_.run_keyword(name, args, kwargs)
176181

177182
def get_keyword_arguments(self, name):
178183
if name == 'stop_remote_server':
179184
return []
180-
return self._library.get_keyword_arguments(name)
185+
library_ = next(l for l in self._library if name in l._names)
186+
return library_.get_keyword_arguments(name)
181187

182188
def get_keyword_documentation(self, name):
183189
if name == 'stop_remote_server':
184190
return ('Stop the remote server unless stopping is disabled.\n\n'
185191
'Return ``True/False`` depending was server stopped or not.')
186-
return self._library.get_keyword_documentation(name)
192+
library_ = next(l for l in self._library if name in l._names)
193+
return library_.get_keyword_documentation(name)
187194

188195
def get_keyword_tags(self, name):
189196
if name == 'stop_remote_server':
190197
return []
191-
return self._library.get_keyword_tags(name)
198+
library_ = next(l for l in self._library if name in l._names)
199+
return library_.get_keyword_tags(name)
192200

193201

194202
class StoppableXMLRPCServer(SimpleXMLRPCServer):

0 commit comments

Comments
 (0)