summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/UserExceptionFactoryManager.cpp
diff options
context:
space:
mode:
authorMarc Laukien <marc@zeroc.com>2003-01-27 21:11:36 +0000
committerMarc Laukien <marc@zeroc.com>2003-01-27 21:11:36 +0000
commite51106b81ce7c098de1bfef0b1cc0fd39763b97f (patch)
tree8b208a4ef512df2a66928fec0de3db28354bcfe6 /cpp/src/Ice/UserExceptionFactoryManager.cpp
parentAdded ICE_UTIL_API for nullHandleAbort (diff)
downloadice-e51106b81ce7c098de1bfef0b1cc0fd39763b97f.tar.bz2
ice-e51106b81ce7c098de1bfef0b1cc0fd39763b97f.tar.xz
ice-e51106b81ce7c098de1bfef0b1cc0fd39763b97f.zip
restructuring
Diffstat (limited to 'cpp/src/Ice/UserExceptionFactoryManager.cpp')
-rw-r--r--cpp/src/Ice/UserExceptionFactoryManager.cpp52
1 files changed, 14 insertions, 38 deletions
diff --git a/cpp/src/Ice/UserExceptionFactoryManager.cpp b/cpp/src/Ice/UserExceptionFactoryManager.cpp
index 1c5ef0fa78d..cc54ac1cc4a 100644
--- a/cpp/src/Ice/UserExceptionFactoryManager.cpp
+++ b/cpp/src/Ice/UserExceptionFactoryManager.cpp
@@ -24,18 +24,15 @@ using namespace IceInternal;
void IceInternal::incRef(UserExceptionFactoryManager* p) { p->__incRef(); }
void IceInternal::decRef(UserExceptionFactoryManager* p) { p->__decRef(); }
-const char * const UserExceptionFactoryManager::_kindOfObject = "user exception factory";
-
void
IceInternal::UserExceptionFactoryManager::add(const UserExceptionFactoryPtr& factory, const string& id)
{
IceUtil::Mutex::Lock sync(*this);
- if( (_factoryMapHint != _factoryMap.end() && _factoryMapHint->first == id)
- || _factoryMap.find(id) != _factoryMap.end())
+ if(_factoryMap.find(id) != _factoryMap.end())
{
AlreadyRegisteredException ex(__FILE__, __LINE__);
- ex.kindOfObject = _kindOfObject;
+ ex.kindOfObject = "user exception factory";
ex.id = id;
throw ex;
}
@@ -46,42 +43,27 @@ IceInternal::UserExceptionFactoryManager::add(const UserExceptionFactoryPtr& fac
void
IceInternal::UserExceptionFactoryManager::remove(const string& id)
{
- IceUtil::Mutex::Lock sync(*this);
+ UserExceptionFactoryPtr factory;
- map<string, ::Ice::UserExceptionFactoryPtr>::iterator p = _factoryMap.end();
-
- if(_factoryMapHint != _factoryMap.end())
{
- if(_factoryMapHint->first == id)
- {
- p = _factoryMapHint;
- }
- }
-
- if(p == _factoryMap.end())
- {
- p = _factoryMap.find(id);
+ IceUtil::Mutex::Lock sync(*this);
+
+ map<string, UserExceptionFactoryPtr>::iterator p = _factoryMap.find(id);
if(p == _factoryMap.end())
{
NotRegisteredException ex(__FILE__, __LINE__);
- ex.kindOfObject = _kindOfObject;
+ ex.kindOfObject = "user exception factory";
ex.id = id;
throw ex;
}
- }
- assert(p != _factoryMap.end());
-
- p->second->destroy();
+
+ factory = p->second;
- if(p == _factoryMapHint)
- {
- _factoryMap.erase(p++);
- _factoryMapHint = p;
- }
- else
- {
_factoryMap.erase(p);
+ _factoryMapHint = _factoryMap.end();
}
+
+ factory->destroy();
}
UserExceptionFactoryPtr
@@ -89,21 +71,15 @@ IceInternal::UserExceptionFactoryManager::find(const string& id)
{
IceUtil::Mutex::Lock sync(*this);
- map<string, ::Ice::UserExceptionFactoryPtr>::iterator p = _factoryMap.end();
-
if(_factoryMapHint != _factoryMap.end())
{
if(_factoryMapHint->first == id)
{
- p = _factoryMapHint;
+ return _factoryMapHint->second;
}
}
- if(p == _factoryMap.end())
- {
- p = _factoryMap.find(id);
- }
-
+ map<string, UserExceptionFactoryPtr>::iterator p = _factoryMap.find(id);
if(p != _factoryMap.end())
{
_factoryMapHint = p;