runtime/PLCObject.py
changeset 2419 c081dabc0f63
parent 2418 5587c490a070
child 2429 15f18dc8b56a
child 2431 6923074540dd
equal deleted inserted replaced
2418:5587c490a070 2419:c081dabc0f63
    30 import sys
    30 import sys
    31 import traceback
    31 import traceback
    32 from time import time
    32 from time import time
    33 import _ctypes  # pylint: disable=wrong-import-order
    33 import _ctypes  # pylint: disable=wrong-import-order
    34 import Pyro.core as pyro
    34 import Pyro.core as pyro
       
    35 import six
    35 
    36 
    36 from runtime.typemapping import TypeTranslator
    37 from runtime.typemapping import TypeTranslator
    37 from runtime.loglevels import LogLevelsDefault, LogLevelsCount
    38 from runtime.loglevels import LogLevelsDefault, LogLevelsCount
    38 from runtime import PlcStatus
    39 from runtime import PlcStatus
    39 
    40 
   145             self.mutex.release()
   146             self.mutex.release()
   146 
   147 
   147         if _job.success:
   148         if _job.success:
   148             return _job.result
   149             return _job.result
   149         else:
   150         else:
   150             raise _job.exc_info[0], _job.exc_info[1], _job.exc_info[2]
   151             exc_type = _job.exc_info[0]
       
   152             exc_value = _job.exc_info[1]
       
   153             exc_traceback = _job.exc_info[2]
       
   154             six.reraise(exc_type, exc_value, exc_traceback)
   151 
   155 
   152     def quit(self):
   156     def quit(self):
   153         """
   157         """
   154         unblocks main thread, and terminate execution of runloop()
   158         unblocks main thread, and terminate execution of runloop()
   155         """
   159         """
   695 
   699 
   696         self.TraceThread = None
   700         self.TraceThread = None
   697 
   701 
   698     def RemoteExec(self, script, *kwargs):
   702     def RemoteExec(self, script, *kwargs):
   699         try:
   703         try:
   700             exec script in kwargs
   704             exec(script, kwargs)
   701         except Exception:
   705         except Exception:
   702             _e_type, e_value, e_traceback = sys.exc_info()
   706             _e_type, e_value, e_traceback = sys.exc_info()
   703             line_no = traceback.tb_lineno(get_last_traceback(e_traceback))
   707             line_no = traceback.tb_lineno(get_last_traceback(e_traceback))
   704             return (-1, "RemoteExec script failed!\n\nLine %d: %s\n\t%s" %
   708             return (-1, "RemoteExec script failed!\n\nLine %d: %s\n\t%s" %
   705                     (line_no, e_value, script.splitlines()[line_no - 1]))
   709                     (line_no, e_value, script.splitlines()[line_no - 1]))