mirror of https://github.com/sipwise/sems.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.1 KiB
47 lines
1.1 KiB
#ifndef _XMLRPCMUTEX_H_
|
|
#define _XMLRPCMUTEX_H_
|
|
//
|
|
// XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
|
|
//
|
|
#if defined(_MSC_VER)
|
|
# pragma warning(disable:4786) // identifier was truncated in debug info
|
|
#endif
|
|
|
|
namespace XmlRpc {
|
|
|
|
//! A simple platform-independent mutex API implemented for posix and windows.
|
|
class XmlRpcMutex {
|
|
public:
|
|
//! Construct a Mutex object.
|
|
XmlRpcMutex() : _pMutex(0) {}
|
|
|
|
//! Destroy a Mutex object.
|
|
~XmlRpcMutex();
|
|
|
|
//! Wait for the mutex to be available and then acquire the lock.
|
|
void acquire();
|
|
|
|
//! Release the mutex.
|
|
void release();
|
|
|
|
//! Utility class to acquire a mutex at construction and release it when destroyed.
|
|
struct AutoLock {
|
|
//! Acquire the mutex at construction
|
|
AutoLock(XmlRpcMutex& m) : _m(m) { _m.acquire(); }
|
|
//! Release at destruction
|
|
~AutoLock() { _m.release(); }
|
|
//! The mutex being held
|
|
XmlRpcMutex& _m;
|
|
};
|
|
|
|
private:
|
|
|
|
//! Native Mutex object
|
|
void* _pMutex;
|
|
|
|
}; // class XmlRpcMutex
|
|
|
|
} // namespace XmlRpc
|
|
|
|
#endif // _XMLRPCMUTEX_H_
|