Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

TGo4TestRunnable Class Reference

Example of a user defined runnable subclass. More...

#include <TGo4TestRunnable.h>

Inheritance diagram for TGo4TestRunnable:

TGo4Runnable List of all members.

Public Methods

 TGo4TestRunnable ()
 TGo4TestRunnable (const TGo4TestRunnable &right)
 TGo4TestRunnable (Text_t *name, TGo4ThreadManager *man, Int_t mode=0)
virtual ~TGo4TestRunnable ()
TGo4TestRunnable & operator= (const TGo4TestRunnable &right)

Protected Methods

virtual Int_t Run (void *ptr)
 The working function which runs in the thread. More...

virtual void ThreadCatch (TGo4Exception &ex)
 catch for exceptions occuring in workfunc. More...

virtual void UnexpectedCatch ()
 catch for all unexcpected exceptions happening in workfunc. More...


Private Attributes

Int_t fiMode
 mode number which can be used to create runnables with different actions in Workfunc; useful for testing without creating new subclasses of runnable... More...

TPad * fxPad
TCanvas * fxCanvas
TH1D * fxHisto

Detailed Description

Example of a user defined runnable subclass.

Method Run() _must_ be implemented. Methods ThreadCatch and UnexpectedCatch _can_ be overridden to change default exception behaviour. This runnable is able to do different actions depending on the fiMode parameter set in the ctor (good for easy testing). However, the usual way is to create a dedicated runnable class for a dedicated purpose and pass different runnable classes to the different go4 threads (see Go4TaskHandler package for examples).

Different actions in this runnable: fiMode=0: Dummy printout a message every 5 seconds. fiMode=1: Kill and create sleep 30s, then kill other threads- sleep 5s, then create other threads again fiMode=2: Stop and start sleep 10s, then stop other threads- sleep 10s, then start other threads again fiMode=3: Aborting all sleep 30s, then abort application by means of exception fiMode=4: Histogramming creates histogram, fills it with random gaussian and draws it on pad depending on the runnable name ("Maker1", "Maker2"), different pads are used Maker 1 deletes histogram again each time, Maker 2 keeps initial histogram sleeps of 2s are used to slow down the action fiMode=5: Recreator Cancel and recreate one thread by name ("First Thread") every 15 s. fiMode=6: Exception tester sleep 60s, then throw different thread exceptions (latest: Restart exception) fiMode=7: Histogram without drawing create histogram, fill it with random and delete it again for memory alloc tests independent from root gui fiMode default: Undefined throw logic exception

NOTE1: Members of the runnable (histogram, canvas) are not deleted when the TThread is killed. The runnable exists independent from the thread. NOTE2: The user just has to create own runnables and a threadmanager subclasses, subclassing of TGo4Thread or other parts of the package are not required!

Author:
J. Adamczewski , Go4 project-DVEE-GSI Darmstadt , Germany , j.adamczewski@gsi.de
Version:
0.9
Since:
jul 2000-oct 2001

Definition at line 73 of file TGo4TestRunnable.h.


Constructor & Destructor Documentation

TGo4TestRunnable::TGo4TestRunnable  
 

Definition at line 23 of file TGo4TestRunnable.cxx.

References TRACE.

Referenced by Run().

TGo4TestRunnable::TGo4TestRunnable const TGo4TestRunnable &    right
 

Definition at line 29 of file TGo4TestRunnable.cxx.

References fiMode, and TRACE.

TGo4TestRunnable::TGo4TestRunnable Text_t *    name,
TGo4ThreadManager   man,
Int_t    mode = 0
 

Definition at line 36 of file TGo4TestRunnable.cxx.

References fiMode, and TRACE.

TGo4TestRunnable::~TGo4TestRunnable   [virtual]
 

Definition at line 44 of file TGo4TestRunnable.cxx.

References TRACE.


Member Function Documentation

TGo4TestRunnable & TGo4TestRunnable::operator= const TGo4TestRunnable &    right
 

Definition at line 50 of file TGo4TestRunnable.cxx.

References fiMode, fxCanvas, fxHisto, fxPad, TGo4Runnable::operator=(), and TRACE.

Int_t TGo4TestRunnable::Run void *    ptr [protected, virtual]
 

The working function which runs in the thread.

Implements TGo4Runnable.

Definition at line 73 of file TGo4TestRunnable.cxx.

References TGo4ThreadManager::BlockApp(), TGo4Thread::Cancel(), TGo4ThreadHandler::Cancel(), TGo4ThreadHandler::Create(), TGo4Log::Debug(), fiMode, TGo4Runnable::fxGo4Thread, fxHisto, TGo4Runnable::fxManager, TGo4ThreadManager::GetWorkHandler(), i, TGo4Thread::Sleep(), TGo4ThreadHandler::Start(), TGo4ThreadHandler::Stop(), TGo4TestRunnable(), TGo4Runnable::TGo4Thread, TRACE, and TGo4ThreadManager::UnBlockApp().

void TGo4TestRunnable::ThreadCatch TGo4Exception   ex [protected, virtual]
 

catch for exceptions occuring in workfunc.

Reimplemented from TGo4Runnable.

Definition at line 339 of file TGo4TestRunnable.cxx.

References TGo4Runnable::ThreadCatch(), and TRACE.

void TGo4TestRunnable::UnexpectedCatch   [protected, virtual]
 

catch for all unexcpected exceptions happening in workfunc.

Reimplemented from TGo4Runnable.

Definition at line 353 of file TGo4TestRunnable.cxx.

References TRACE, and TGo4Runnable::UnexpectedCatch().


Member Data Documentation

Int_t TGo4TestRunnable::fiMode [private]
 

mode number which can be used to create runnables with different actions in Workfunc; useful for testing without creating new subclasses of runnable...

Definition at line 116 of file TGo4TestRunnable.h.

Referenced by operator=(), Run(), and TGo4TestRunnable().

TPad* TGo4TestRunnable::fxPad [private]
 

Definition at line 119 of file TGo4TestRunnable.h.

Referenced by operator=().

TCanvas* TGo4TestRunnable::fxCanvas [private]
 

Definition at line 120 of file TGo4TestRunnable.h.

Referenced by operator=().

TH1D* TGo4TestRunnable::fxHisto [private]
 

Definition at line 121 of file TGo4TestRunnable.h.

Referenced by operator=(), and Run().


The documentation for this class was generated from the following files:
Generated on Tue Nov 8 10:56:57 2005 for Go4-v2.10-5 by doxygen1.2.15