71 and return defaul value when it happen |
71 and return defaul value when it happen |
72 """ |
72 """ |
73 def catcher_func(*args,**kwargs): |
73 def catcher_func(*args,**kwargs): |
74 try: |
74 try: |
75 return func(*args,**kwargs) |
75 return func(*args,**kwargs) |
|
76 except Pyro.errors.ConnectionClosedError, e: |
|
77 confnodesroot.logger.write_error("Connection lost!\n") |
|
78 confnodesroot._SetConnector(None) |
76 except Pyro.errors.ProtocolError, e: |
79 except Pyro.errors.ProtocolError, e: |
77 confnodesroot.logger.write_error("Pyro exception: "+str(e)+"\n") |
80 confnodesroot.logger.write_error("Pyro exception: "+str(e)+"\n") |
78 except Pyro.errors.ConnectionClosedError, e: |
|
79 confnodesroot.logger.write_error("Connection lost!\n") |
|
80 confnodesroot._connector = None |
|
81 except Exception,e: |
81 except Exception,e: |
82 #confnodesroot.logger.write_error(traceback.format_exc()) |
82 #confnodesroot.logger.write_error(traceback.format_exc()) |
83 errmess = ''.join(Pyro.util.getPyroTraceback(e)) |
83 errmess = ''.join(Pyro.util.getPyroTraceback(e)) |
84 confnodesroot.logger.write_error(errmess+"\n") |
84 confnodesroot.logger.write_error(errmess+"\n") |
85 print errmess |
85 print errmess |
86 confnodesroot._connector = None |
86 confnodesroot._SetConnector(None) |
87 return default |
87 return default |
88 return catcher_func |
88 return catcher_func |
89 |
89 |
90 # Check connection is effective. |
90 # Check connection is effective. |
91 # lambda is for getattr of GetPLCstatus to happen inside catcher |
91 # lambda is for getattr of GetPLCstatus to happen inside catcher |