RTP Trace System
1.0
|
00001 // ########################################################################## 00002 // #### #### 00003 // #### RTP Audio Server Project #### 00004 // #### ============================ #### 00005 // #### #### 00006 // #### Synchronizable #### 00007 // #### #### 00008 // #### Version 1.00 -- February 16, 2001 #### 00009 // #### #### 00010 // #### Copyright (C) 1999 Thomas Dreibholz #### 00011 // #### 2000 Universität Bonn, Abt. IV #### 00012 // #### 2001 EMail: dreibh@iem.uni-due.de #### 00013 // #### WWW: https://www.uni-due.de/~be0001 #### 00014 // #### #### 00015 // ########################################################################## 00016 00017 00018 #ifndef SYNCHRONIZABLE_H 00019 #define SYNCHRONIZABLE_H 00020 00021 00022 #include "system.h" 00023 00024 00025 #include <pthread.h> 00026 00027 00028 namespace Coral { 00029 00030 00031 // Debug mode: Print all synchronized/unsynchronized calls with file name 00032 // and line number using macros synchronized() and unsynchronized() 00033 // to call debug functions. 00034 // #define SYNC_DEBUG 00035 00036 00051 class Synchronizable 00052 { 00053 // ====== Constructor/Destructor ========================================= 00054 public: 00058 Synchronizable(); 00059 00063 ~Synchronizable(); 00064 00065 00066 // ====== Synchronization ================================================ 00075 inline void synchronized(); 00076 00085 inline bool synchronizedTry(); 00086 00093 inline void unsynchronized(); 00094 00095 00099 void resynchronize(); 00100 00101 00102 // ====== Debug functions ================================================ 00112 void synchronized_debug(const char* file, const cardinal line); 00113 00123 void unsynchronized_debug(const char* file, const cardinal line); 00124 00134 bool synchronizedTry_debug(const char* file, const cardinal line); 00135 00145 void resynchronize_debug(const char* file, const cardinal line); 00146 00147 00148 // ====== Private data =================================================== 00149 private: 00150 pthread_mutex_t Mutex; 00151 }; 00152 00153 00154 } 00155 00156 00157 #include "synchronizable.icc" 00158 00159 00160 #ifdef SYNC_DEBUG 00161 #define synchronized() synchronized_debug(__FILE__,__LINE__) 00162 #define unsynchronized() unsynchronized_debug(__FILE__,__LINE__) 00163 #define synchronizedTry() synchronizedTry_debug(__FILE__,__LINE__) 00164 #define resynchronize() resynchronize_debug(__FILE__,__LINE__) 00165 #endif 00166 00167 00168 #endif