00001 #ifndef __THREAD_CPP__ 00002 #define __THREAD_CPP__ 00003 00004 #include <string> 00005 00006 #include <utilities/exception.h> 00007 #include <utilities/testing_utilities.h> 00008 #include <utilities/thread.h> 00009 00010 namespace nitro 00011 { 00012 Thread::Thread( void ) 00013 { 00014 try 00015 { 00016 } 00017 catch( nitro::exception e ) 00018 { 00019 throw( nitro::exception( std::string( "Thread::Thread( void )::" ) + e.what() , e.code() ) ); 00020 } 00021 catch( ... ) 00022 { 00023 throw( nitro::exception( std::string( "Thread::Thread( void )::An error occured" ) , 0 ) ); 00024 } 00025 } 00026 00027 void * HighLevelThreadFunction( void * Param ) 00028 { 00029 try 00030 { 00031 ( ( Thread * )Param )->ThreadFunction(); 00032 return( NULL ); 00033 } 00034 catch( nitro::exception e ) 00035 { 00036 } 00037 catch( ... ) 00038 { 00039 } 00040 00041 return( NULL ); 00042 } 00043 00044 void Thread::Run( void ) 00045 { 00046 try 00047 { 00048 LocalThread.CreateThread( HighLevelThreadFunction , ( void * )this ); 00049 } 00050 catch( nitro::exception e ) 00051 { 00052 throw( nitro::exception( std::string( "Thread::Run( void )::" ) + e.what() , e.code() ) ); 00053 } 00054 catch( ... ) 00055 { 00056 throw( nitro::exception( std::string( "Thread::Run( void )::An error occured" ) , 0 ) ); 00057 } 00058 } 00059 00060 /* virtual */ Thread::~Thread() 00061 { 00062 try 00063 { 00064 } 00065 catch( nitro::exception e ) 00066 { 00067 } 00068 catch( ... ) 00069 { 00070 } 00071 } 00072 } 00073 00074 #endif