--- a/connectors/__init__.py Sat Dec 06 19:31:51 2014 +0000
+++ b/connectors/__init__.py Wed Oct 21 15:00:32 2015 +0100
@@ -1,23 +1,23 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
-#Copyright (C) 2007: Edouard TISSERANT and Laurent BESSARD
+# Copyright (C) 2007: Edouard TISSERANT and Laurent BESSARD
#
-#See COPYING file for copyrights details.
+# See COPYING file for copyrights details.
#
-#This library is free software; you can redistribute it and/or
-#modify it under the terms of the GNU General Public
-#License as published by the Free Software Foundation; either
-#version 2.1 of the License, or (at your option) any later version.
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
#
-#This library is distributed in the hope that it will be useful,
-#but WITHOUT ANY WARRANTY; without even the implied warranty of
-#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-#General Public License for more details.
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
#
-#You should have received a copy of the GNU General Public
-#License along with this library; if not, write to the Free Software
-#Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+# You should have received a copy of the GNU General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# Package initialisation
@@ -28,27 +28,35 @@
def _GetLocalConnectorClassFactory(name):
- return lambda:getattr(__import__(name,globals(),locals()), name + "_connector_factory")
+ return lambda: getattr(__import__(name, globals(), locals()), name + "_connector_factory")
-connectors = {name:_GetLocalConnectorClassFactory(name)
- for name in listdir(_base_path)
- if path.isdir(path.join(_base_path, name))
+connectors = {name:_GetLocalConnectorClassFactory(name)
+ for name in listdir(_base_path)
+ if path.isdir(path.join(_base_path, name))
and not name.startswith("__")}
+
def ConnectorFactory(uri, confnodesroot):
"""
Return a connector corresponding to the URI
or None if cannot connect to URI
"""
- servicetype = uri.split("://")[0]
- if servicetype in connectors:
- # import module according to uri type
- connectorclass = connectors[servicetype]()
- elif servicetype == "LOCAL":
- from PYRO import PYRO_connector_factory as connectorclass
- runtime_port = confnodesroot.AppFrame.StartLocalRuntime(taskbaricon=True)
- uri="PYRO://127.0.0.1:"+str(runtime_port)
- else :
- return None
+ servicetype = uri.split("://")[0].upper()
+ if servicetype == "LOCAL":
+ # Local is special case
+ # pyro connection to local runtime
+ # started on demand, listening on random port
+ servicetype = "PYRO"
+ runtime_port = confnodesroot.AppFrame.StartLocalRuntime(
+ taskbaricon=True)
+ uri = "PYROLOC://127.0.0.1:" + str(runtime_port)
+ elif servicetype in connectors:
+ pass
+ elif servicetype[-1] == 'S' and servicetype[:-1] in connectors:
+ servicetype = servicetype[:-1]
+ else:
+ return None
+
+ # import module according to uri type
+ connectorclass = connectors[servicetype]()
return connectorclass(uri, confnodesroot)
-