63 WAMP://127.0.0.1:12345/path#realm#ID |
63 WAMP://127.0.0.1:12345/path#realm#ID |
64 WAMPS://127.0.0.1:12345/path#realm#ID |
64 WAMPS://127.0.0.1:12345/path#realm#ID |
65 """ |
65 """ |
66 servicetype, location = uri.split("://") |
66 servicetype, location = uri.split("://") |
67 urlpath, realm, ID = location.split('#') |
67 urlpath, realm, ID = location.split('#') |
68 urlprefix = {"WAMP":"ws", |
68 urlprefix = {"WAMP": "ws", |
69 "WAMPS":"wss"}[servicetype] |
69 "WAMPS": "wss"}[servicetype] |
70 url = urlprefix+"://"+urlpath |
70 url = urlprefix+"://"+urlpath |
71 |
71 |
72 def RegisterWampClient(): |
72 def RegisterWampClient(): |
73 |
73 |
74 ## start logging to console |
74 ## start logging to console |
75 # log.startLogging(sys.stdout) |
75 # log.startLogging(sys.stdout) |
76 |
76 |
77 # create a WAMP application session factory |
77 # create a WAMP application session factory |
78 component_config = types.ComponentConfig( |
78 component_config = types.ComponentConfig( |
79 realm = realm, |
79 realm = realm, |
80 extra = {"ID":ID}) |
80 extra = {"ID": ID}) |
81 session_factory = wamp.ApplicationSessionFactory( |
81 session_factory = wamp.ApplicationSessionFactory( |
82 config = component_config) |
82 config = component_config) |
83 session_factory.session = WampSession |
83 session_factory.session = WampSession |
84 |
84 |
85 # create a WAMP-over-WebSocket transport client factory |
85 # create a WAMP-over-WebSocket transport client factory |
101 _WampConnection = RegisterWampClient() |
101 _WampConnection = RegisterWampClient() |
102 AddToDoBeforeQuit(reactor.stop) |
102 AddToDoBeforeQuit(reactor.stop) |
103 reactor.run(installSignalHandlers=False) |
103 reactor.run(installSignalHandlers=False) |
104 |
104 |
105 def WampSessionProcMapper(funcname): |
105 def WampSessionProcMapper(funcname): |
106 wampfuncname = '.'.join((ID,funcname)) |
106 wampfuncname = '.'.join((ID, funcname)) |
107 def catcher_func(*args,**kwargs): |
107 def catcher_func(*args, **kwargs): |
108 global _WampSession |
108 global _WampSession |
109 if _WampSession is not None: |
109 if _WampSession is not None: |
110 try: |
110 try: |
111 return threads.blockingCallFromThread( |
111 return threads.blockingCallFromThread( |
112 reactor, _WampSession.call, wampfuncname, |
112 reactor, _WampSession.call, wampfuncname, |
113 *args,**kwargs) |
113 *args, **kwargs) |
114 except TransportLost, e: |
114 except TransportLost, e: |
115 confnodesroot.logger.write_error(_("Connection lost!\n")) |
115 confnodesroot.logger.write_error(_("Connection lost!\n")) |
116 confnodesroot._SetConnector(None) |
116 confnodesroot._SetConnector(None) |
117 except Exception,e: |
117 except Exception, e: |
118 errmess = traceback.format_exc() |
118 errmess = traceback.format_exc() |
119 confnodesroot.logger.write_error(errmess+"\n") |
119 confnodesroot.logger.write_error(errmess+"\n") |
120 print errmess |
120 print errmess |
121 #confnodesroot._SetConnector(None) |
121 #confnodesroot._SetConnector(None) |
122 return PLCObjDefaults.get(funcname) |
122 return PLCObjDefaults.get(funcname) |