RTP Trace System  1.0
synchronizable.h
Go to the documentation of this file.
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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines