CppUnit project page | FAQ |
00001 #ifndef CPPUNIT_SYNCHRONIZEDOBJECT_H 00002 #define CPPUNIT_SYNCHRONIZEDOBJECT_H 00003 00004 #include <cppunit/Portability.h> 00005 00006 00007 CPPUNIT_NS_BEGIN 00008 00009 00022 class CPPUNIT_API SynchronizedObject 00023 { 00024 public: 00027 class SynchronizationObject 00028 { 00029 public: 00030 SynchronizationObject() {} 00031 virtual ~SynchronizationObject() {} 00032 00033 virtual void lock() {} 00034 virtual void unlock() {} 00035 }; 00036 00039 SynchronizedObject( SynchronizationObject *syncObject =0 ); 00040 00042 virtual ~SynchronizedObject(); 00043 00044 protected: 00047 class ExclusiveZone 00048 { 00049 SynchronizationObject *m_syncObject; 00050 00051 public: 00052 ExclusiveZone( SynchronizationObject *syncObject ) 00053 : m_syncObject( syncObject ) 00054 { 00055 m_syncObject->lock(); 00056 } 00057 00058 ~ExclusiveZone() 00059 { 00060 m_syncObject->unlock (); 00061 } 00062 private: 00064 ExclusiveZone( const ExclusiveZone& ); 00065 00067 ExclusiveZone& operator=( const ExclusiveZone& ); 00068 }; 00069 00070 virtual void setSynchronizationObject( SynchronizationObject *syncObject ); 00071 00072 protected: 00073 SynchronizationObject *m_syncObject; 00074 00075 private: 00077 SynchronizedObject( const SynchronizedObject © ); 00078 00080 void operator =( const SynchronizedObject © ); 00081 }; 00082 00083 00084 CPPUNIT_NS_END 00085 00086 #endif // CPPUNIT_SYNCHRONIZEDOBJECT_H
Send comments to: CppUnit Developers |