summaryrefslogtreecommitdiff
path: root/cpp/src/Glacier2/Blobject.cpp
diff options
context:
space:
mode:
authorDwayne Boone <dwayne@zeroc.com>2006-04-25 14:33:55 +0000
committerDwayne Boone <dwayne@zeroc.com>2006-04-25 14:33:55 +0000
commitaeceeaac287cdba605b9eee12508d58882db5ff2 (patch)
tree5b40f2e2b82b52f6db21d544daae375a4fac1811 /cpp/src/Glacier2/Blobject.cpp
parentminor fix (diff)
downloadice-aeceeaac287cdba605b9eee12508d58882db5ff2.tar.bz2
ice-aeceeaac287cdba605b9eee12508d58882db5ff2.tar.xz
ice-aeceeaac287cdba605b9eee12508d58882db5ff2.zip
Fix bug 909 again - removed more sync
Diffstat (limited to 'cpp/src/Glacier2/Blobject.cpp')
-rw-r--r--cpp/src/Glacier2/Blobject.cpp26
1 files changed, 13 insertions, 13 deletions
diff --git a/cpp/src/Glacier2/Blobject.cpp b/cpp/src/Glacier2/Blobject.cpp
index b4f1e44ae25..9fb116909da 100644
--- a/cpp/src/Glacier2/Blobject.cpp
+++ b/cpp/src/Glacier2/Blobject.cpp
@@ -55,7 +55,7 @@ Glacier2::Blobject::Blobject(const CommunicatorPtr& communicator, bool reverse)
IceUtil::Time::milliSeconds(_properties->getPropertyAsInt(serverSleepTime)) :
IceUtil::Time::milliSeconds(_properties->getPropertyAsInt(clientSleepTime));
- _requestQueue = new RequestQueue(sleepTime);
+ const_cast<RequestQueuePtr&>(_requestQueue) = new RequestQueue(sleepTime);
Int threadStackSize = _properties->getPropertyAsInt("Ice.ThreadPerConnection.StackSize");
@@ -74,11 +74,7 @@ Glacier2::Blobject::Blobject(const CommunicatorPtr& communicator, bool reverse)
out << "cannot create thread for request queue:\n" << ex;
}
- if(_requestQueue)
- {
- _requestQueue->destroy();
- _requestQueue = 0;
- }
+ _requestQueue->destroy();
throw;
}
@@ -87,17 +83,12 @@ Glacier2::Blobject::Blobject(const CommunicatorPtr& communicator, bool reverse)
Glacier2::Blobject::~Blobject()
{
- assert(!_requestQueue);
}
void
Glacier2::Blobject::destroy()
{
- if(_requestQueue)
- {
- _requestQueue->destroy();
- _requestQueue = 0;
- }
+ _requestQueue->destroy();
}
void
@@ -268,7 +259,16 @@ Glacier2::Blobject::invoke(ObjectPrx& proxy, const AMD_Array_Object_ice_invokePt
// AMI.
//
- bool override = _requestQueue->addRequest(new Request(proxy, inParams, current, _forwardContext, amdCB));
+ bool override;
+ try
+ {
+ override = _requestQueue->addRequest(new Request(proxy, inParams, current, _forwardContext, amdCB));
+ }
+ catch(const ObjectNotExistException& ex)
+ {
+ amdCB->ice_exception(ex);
+ return;
+ }
if(override && _overrideTraceLevel >= 1)
{