Back to index

salome-kernel  6.5.0
Public Member Functions | Private Attributes
KERNEL_PY.kernel.threadhelper.Runner Class Reference

List of all members.

Public Member Functions

def __init__
def setFunction
def setArguments
def getReturn
def setCallbackFunction
def setObserver
def run
def notifyObserver
def callback
def isEnded
def getException
def getId
def wait
def kill
def clear

Private Attributes

 _stopevent
 _exception
 _return
 _observer
 _callbackFunction
 _id
 _function
 _argv

Detailed Description

This class provides a tool to run and drive a function in a dedicated thread.

Definition at line 31 of file threadhelper.py.


Constructor & Destructor Documentation

def KERNEL_PY.kernel.threadhelper.Runner.__init__ (   self,
  functionToRun = None,
  argv 
)

Definition at line 35 of file threadhelper.py.

00035 
00036     def __init__(self, functionToRun=None,*argv):
00037         threading.Thread.__init__( self )
00038         self._stopevent = threading.Event()
00039         self.setFunction(functionToRun)
00040         self.setArguments(*argv)
00041         self._exception = None
00042         self._return    = None
00043         self._observer  = None
00044         self._callbackFunction = None
00045         # We create an id from the name and the time date in milliseconds
00046         self._id = functionToRun.__name__ +"/"+ str(time.time())


Member Function Documentation

Definition at line 120 of file threadhelper.py.

00120 
00121     def callback(self):
00122         if self._callbackFunction is None: return
00123         self._callbackFunction()

Here is the caller graph for this function:

Definition at line 169 of file threadhelper.py.

00169 
00170     def clear(self):
00171         self._stopevent.clear()
00172         self._exception = None
00173         self._return    = None
00174 
00175 # ===========================================================================
00176 CONTINUE=1
00177 STOP=0

Here is the caller graph for this function:

Definition at line 136 of file threadhelper.py.

00136 
00137     def getException(self):
00138         return self._exception

Definition at line 139 of file threadhelper.py.

00139 
00140     def getId(self):
00141         return self._id

Retourne le resultat de la fonction. En cas d'erreur, on
r�cup�rera l'exception lev�e au moyen de la m�thode
getException().

Definition at line 62 of file threadhelper.py.

00062 
00063     def getReturn(self):
00064         """
00065         Retourne le resultat de la fonction. En cas d'erreur, on
00066         r�cup�rera l'exception lev�e au moyen de la m�thode
00067         getException().
00068         """
00069         return self._return

Retourne true si la fonction s'est termin�e naturellement
(correctement ou en erreur). Utile pour les client qui
pratique le pooling (interrogation r�p�t�e � intervalle
r�gulier.

Definition at line 124 of file threadhelper.py.

00124 
00125     def isEnded(self):
00126         """
00127         Retourne true si la fonction s'est termin�e naturellement
00128         (correctement ou en erreur). Utile pour les client qui
00129         pratique le pooling (interrogation r�p�t�e � intervalle
00130         r�gulier.
00131         """
00132         return self._stopevent.isSet()
00133         # _GBO_ On n'utilise pas isAlive() pour pouvoir ma�triser
00134         # l'indicateur de stop (exemple de la fonction kill)
00135         # return not self.isAlive()

def KERNEL_PY.kernel.threadhelper.Runner.kill (   self,
  message = "Arr�t demand�" 
)
Cette m�thode doit �tre appeler pour interrombre le
thread. Cet appel d�clare le thread comme en erreur (exception
mise � disposition par la m�thode getException().

Definition at line 155 of file threadhelper.py.

00155 
00156     def kill(self,message="Arr�t demand�"):
00157         """
00158         Cette m�thode doit �tre appeler pour interrombre le
00159         thread. Cet appel d�clare le thread comme en erreur (exception
00160         mise � disposition par la m�thode getException().
00161         """
00162         # On cr�e un exception indiquant la demande d'interruption
00163         self._exception = Exception(message)
00164         self._stopevent.set()
00165         # _GBO_ ATTENTION
00166         # Un thread python ne peut pas en r�alit� �tre int�rrompu.
00167         # La fonction reste donc en ex�cution m�me si on a rejoint le
00168         # thread appelant.

Definition at line 104 of file threadhelper.py.

00104 
00105     def notifyObserver(self):
00106         if self._observer is None:
00107             # Aucune notification pr�vue
00108             return
00109         try:
00110             self._observer.processNotification()
00111         except AttributeError, att:
00112             if str(att) == "processNotification":
00113                 print "L'observateur n'impl�mente pas la m�thode processNotification()"
00114             else:
00115                 print "La fonction processNotification() a lev� une exception:"
00116                 print att
00117         except Exception, e:
00118             print "La fonction processNotification() a lev� une exception:"
00119             print e

Here is the caller graph for this function:

Ex�cution de la fonction. Impl�mentation de la m�thode run
d�clench�e par l'appel � Thread.start().

Definition at line 86 of file threadhelper.py.

00086 
00087     def run(self):
00088         """
00089         Ex�cution de la fonction. Impl�mentation de la m�thode run
00090         d�clench�e par l'appel � Thread.start().
00091         """
00092         print "##################### threadhelper.run"
00093         if self._function is None: return
00094         try:
00095             self._return = self._function(*self._argv)
00096         except Exception, e:
00097             print e
00098             self._exception = e
00099         self._stopevent.set()
00100         self.notifyObserver()
00101         self.callback()
00102         # _GBO_ Maybe it's no use to have both observers and a callback function.
00103         # One of the two mechanism should be sufficient

Here is the call graph for this function:

Positionne les arguments � passer � la fonction

Definition at line 55 of file threadhelper.py.

00055 
00056     def setArguments(self,*argv):
00057         """
00058         Positionne les arguments � passer � la fonction
00059         """
00060         self.clear()
00061         self._argv = argv

Here is the call graph for this function:

def KERNEL_PY.kernel.threadhelper.Runner.setCallbackFunction (   self,
  callbackFunction 
)

Definition at line 70 of file threadhelper.py.

00070 
00071     def setCallbackFunction(self, callbackFunction):
00072         self._callbackFunction = callbackFunction

def KERNEL_PY.kernel.threadhelper.Runner.setFunction (   self,
  functionToRun 
)
Positionne la fonction � ex�cuter. La fonction peut �tre la
m�thode d'un objet pass�e sous la forme 'monobjet.mamethode'.

Definition at line 47 of file threadhelper.py.

00047 
00048     def setFunction(self,functionToRun):
00049         """
00050         Positionne la fonction � ex�cuter. La fonction peut �tre la
00051         m�thode d'un objet pass�e sous la forme 'monobjet.mamethode'.
00052         """
00053         self.clear()
00054         self._function = functionToRun

Here is the call graph for this function:

def KERNEL_PY.kernel.threadhelper.Runner.setObserver (   self,
  observerToNotify 
)
Permet de sp�cifier un observateur � notifier en fin
d'ex�cution. L'observateur est suppos� �tre un objet qui
impl�mente une m�thode processNotification()

Definition at line 73 of file threadhelper.py.

00073 
00074     def setObserver(self, observerToNotify):
00075         """
00076         Permet de sp�cifier un observateur � notifier en fin
00077         d'ex�cution. L'observateur est suppos� �tre un objet qui
00078         impl�mente une m�thode processNotification()
00079         """
00080         try:
00081             observerToNotify.processNotification
00082         except AttributeError:
00083             raise DevelException("The observer should implement the method processNotification()")
00084 
00085         self._observer = observerToNotify

Here is the call graph for this function:

def KERNEL_PY.kernel.threadhelper.Runner.wait (   self,
  timeout = None 
)
Met fin au thread apr�s timeout seconde s'il est encore en
ex�cution.
Si le compte-�-rebours est atteind sans que la fonction
functionToRun soit termin�e, alors le runner est laiss� dans
l'�tat 'not Ended', c'est-�-dire que isEnded retourne
false. On peut ainsi distinguer l'arr�t normal de l'arr�t �
l'issue du timeout.

Definition at line 142 of file threadhelper.py.

00142 
00143     def wait(self,timeout=None):
00144         """
00145         Met fin au thread apr�s timeout seconde s'il est encore en
00146         ex�cution.
00147         Si le compte-�-rebours est atteind sans que la fonction
00148         functionToRun soit termin�e, alors le runner est laiss� dans
00149         l'�tat 'not Ended', c'est-�-dire que isEnded retourne
00150         false. On peut ainsi distinguer l'arr�t normal de l'arr�t �
00151         l'issue du timeout.
00152         """
00153         threading.Thread.join(self, timeout)
00154 


Member Data Documentation

Definition at line 60 of file threadhelper.py.

Definition at line 43 of file threadhelper.py.

Definition at line 40 of file threadhelper.py.

Definition at line 53 of file threadhelper.py.

Definition at line 45 of file threadhelper.py.

Definition at line 42 of file threadhelper.py.

Definition at line 41 of file threadhelper.py.

Definition at line 37 of file threadhelper.py.


The documentation for this class was generated from the following file: