diff -r a1d7187b8402 -r 7e17f7e02a2b connectors/WAMP/__init__.py --- a/connectors/WAMP/__init__.py Fri Nov 24 12:16:19 2023 +0100 +++ b/connectors/WAMP/__init__.py Wed Nov 29 11:54:56 2023 +0100 @@ -38,7 +38,6 @@ from autobahn.wamp.exception import TransportLost from autobahn.wamp.serializer import MsgPackSerializer -from runtime import PlcStatus _WampSession = None _WampConnection = None @@ -59,14 +58,6 @@ print('WAMP session left') -PLCObjDefaults = { - "StartPLC": False, - "GetTraceVariables": ("Broken", None), - "GetPLCstatus": (PlcStatus.Broken, None), - "RemoteExec": (-1, "RemoteExec script failed!") -} - - def _WAMP_connector_factory(cls, uri, confnodesroot): """ WAMP://127.0.0.1:12345/path#realm#ID @@ -110,26 +101,6 @@ AddToDoBeforeQuit(reactor.stop) reactor.run(installSignalHandlers=False) - def WampSessionProcMapper(funcname): - wampfuncname = text('.'.join((ID, funcname))) - - def catcher_func(*args, **kwargs): - if _WampSession is not None: - try: - return threads.blockingCallFromThread( - reactor, _WampSession.call, wampfuncname, - *args, **kwargs) - except TransportLost: - confnodesroot.logger.write_error(_("Connection lost!\n")) - confnodesroot._SetConnector(None) - except Exception: - errmess = traceback.format_exc() - confnodesroot.logger.write_error(errmess+"\n") - print(errmess) - # confnodesroot._SetConnector(None) - return PLCObjDefaults.get(funcname) - return catcher_func - class WampPLCObjectProxy(object): def __init__(self): global _WampConnection @@ -147,10 +118,30 @@ # # reactor.stop() + def WampSessionProcMapper(self, funcname): + wampfuncname = text('.'.join((ID, funcname))) + + def catcher_func(*args, **kwargs): + if _WampSession is not None: + try: + return threads.blockingCallFromThread( + reactor, _WampSession.call, wampfuncname, + *args, **kwargs) + except TransportLost: + confnodesroot.logger.write_error(_("Connection lost!\n")) + confnodesroot._SetConnector(None) + except Exception: + errmess = traceback.format_exc() + confnodesroot.logger.write_error(errmess+"\n") + print(errmess) + # confnodesroot._SetConnector(None) + return self.PLCObjDefaults.get(funcname) + return catcher_func + def __getattr__(self, attrName): member = self.__dict__.get(attrName, None) if member is None: - member = WampSessionProcMapper(attrName) + member = self.WampSessionProcMapper(attrName) self.__dict__[attrName] = member return member