summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/IncomingAsync.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/Ice/IncomingAsync.cpp')
-rw-r--r--cpp/src/Ice/IncomingAsync.cpp36
1 files changed, 31 insertions, 5 deletions
diff --git a/cpp/src/Ice/IncomingAsync.cpp b/cpp/src/Ice/IncomingAsync.cpp
index 9a4ec61aa81..ee80f85cec7 100644
--- a/cpp/src/Ice/IncomingAsync.cpp
+++ b/cpp/src/Ice/IncomingAsync.cpp
@@ -16,7 +16,8 @@
#include <Ice/Instance.h>
#include <Ice/Properties.h>
#include <Ice/ReplyStatus.h>
-#include <IceUtil/StaticMutex.h>
+#include <IceUtil/Mutex.h>
+#include <IceUtil/MutexPtrLock.h>
using namespace std;
using namespace Ice;
@@ -25,6 +26,31 @@ using namespace IceInternal;
IceUtil::Shared* IceInternal::upCast(IncomingAsync* p) { return p; }
IceUtil::Shared* IceInternal::upCast(AMD_Object_ice_invoke* p) { return p; }
+namespace
+{
+
+IceUtil::Mutex* globalMutex = 0;
+
+class Init
+{
+public:
+
+ Init()
+ {
+ globalMutex = new IceUtil::Mutex;
+ }
+
+ ~Init()
+ {
+ delete globalMutex;
+ globalMutex = 0;
+ }
+};
+
+Init init;
+
+}
+
IceInternal::IncomingAsync::IncomingAsync(Incoming& in) :
IncomingBase(in),
_instanceCopy(_os.instance()),
@@ -43,7 +69,7 @@ IceInternal::IncomingAsync::__deactivate(Incoming& in)
{
assert(_retriable);
{
- IceUtil::StaticMutex::Lock lock(IceUtil::globalMutex);
+ IceUtilInternal::MutexPtrLock<IceUtil::Mutex> lock(globalMutex);
if(!_active)
{
//
@@ -154,7 +180,7 @@ IceInternal::IncomingAsync::__validateResponse(bool ok)
return false;
}
- IceUtil::StaticMutex::Lock lock(IceUtil::globalMutex);
+ IceUtilInternal::MutexPtrLock<IceUtil::Mutex> lock(globalMutex);
if(_active)
{
_active = false;
@@ -191,7 +217,7 @@ IceInternal::IncomingAsync::__validateException(const std::exception& ex)
return false;
}
- IceUtil::StaticMutex::Lock lock(IceUtil::globalMutex);
+ IceUtilInternal::MutexPtrLock<IceUtil::Mutex> lock(globalMutex);
if(_active)
{
_active = false;
@@ -227,7 +253,7 @@ IceInternal::IncomingAsync::__validateException()
return false;
}
- IceUtil::StaticMutex::Lock lock(IceUtil::globalMutex);
+ IceUtilInternal::MutexPtrLock<IceUtil::Mutex> lock(globalMutex);
if(_active)
{
_active = false;