diff options
author | Dwayne Boone <dwayne@zeroc.com> | 2006-12-13 14:34:57 +0000 |
---|---|---|
committer | Dwayne Boone <dwayne@zeroc.com> | 2006-12-13 14:34:57 +0000 |
commit | 769e22f35e9d21344639a36e07ec90ee2656140c (patch) | |
tree | 36ac09ee40ddf18d408736ceaa59ee9f8e05e414 /cpp/src/Ice/ObjectAdapterFactory.cpp | |
parent | Added support for server logs (diff) | |
download | ice-769e22f35e9d21344639a36e07ec90ee2656140c.tar.bz2 ice-769e22f35e9d21344639a36e07ec90ee2656140c.tar.xz ice-769e22f35e9d21344639a36e07ec90ee2656140c.zip |
Bug 1570 - object adapter configuration
Diffstat (limited to 'cpp/src/Ice/ObjectAdapterFactory.cpp')
-rw-r--r-- | cpp/src/Ice/ObjectAdapterFactory.cpp | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/cpp/src/Ice/ObjectAdapterFactory.cpp b/cpp/src/Ice/ObjectAdapterFactory.cpp index bd1c9152be6..36b88ee695e 100644 --- a/cpp/src/Ice/ObjectAdapterFactory.cpp +++ b/cpp/src/Ice/ObjectAdapterFactory.cpp @@ -11,6 +11,7 @@ #include <Ice/ObjectAdapterI.h> #include <Ice/LocalException.h> #include <Ice/Functional.h> +#include <IceUtil/UUID.h> using namespace std; using namespace Ice; @@ -116,8 +117,25 @@ IceInternal::ObjectAdapterFactory::createObjectAdapter(const string& name, const throw AlreadyRegisteredException(__FILE__, __LINE__, "object adapter", name); } - ObjectAdapterIPtr adapter = new ObjectAdapterI(_instance, _communicator, this, name, endpoints, router); - _adapters.insert(make_pair(name, adapter)); + if(name.empty() && (!name.empty() || router != 0)) + { + InitializationException ex(__FILE__, __LINE__); + ex.reason = "Cannot configure endpoints or router with nameless object adapter"; + throw ex; + } + + ObjectAdapterIPtr adapter; + if(name.empty()) + { + string uuid = IceUtil::generateUUID(); + adapter = new ObjectAdapterI(_instance, _communicator, this, uuid, "", 0, true); + _adapters.insert(make_pair(uuid, adapter)); + } + else + { + adapter = new ObjectAdapterI(_instance, _communicator, this, name, endpoints, router, false); + _adapters.insert(make_pair(name, adapter)); + } return adapter; } |