summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/Freeze/DBI.cpp116
-rw-r--r--cpp/src/Ice/CommunicatorI.cpp2
-rw-r--r--cpp/src/Ice/Instance.cpp17
-rw-r--r--cpp/src/Ice/Instance.h4
-rw-r--r--cpp/src/Ice/LoggerI.cpp6
-rw-r--r--cpp/src/Ice/LoggerI.h1
-rw-r--r--cpp/src/Ice/ObjectAdapterI.cpp2
-rw-r--r--cpp/src/Ice/ServantFactoryManager.cpp4
-rw-r--r--cpp/src/Ice/Stream.cpp2
-rw-r--r--cpp/src/Ice/SysLoggerI.cpp6
-rw-r--r--cpp/src/Ice/SysLoggerI.h1
-rw-r--r--cpp/src/Ice/TraceLevels.cpp6
-rw-r--r--cpp/src/IcePack/Client.cpp12
-rw-r--r--cpp/src/IcePack/Forward.cpp16
-rw-r--r--cpp/src/IcePack/Forward.h1
-rw-r--r--cpp/src/IcePack/Parser.cpp21
-rw-r--r--cpp/src/IcePack/Server.cpp15
17 files changed, 152 insertions, 80 deletions
diff --git a/cpp/src/Freeze/DBI.cpp b/cpp/src/Freeze/DBI.cpp
index 4ea2d552ba0..fc8b1510083 100644
--- a/cpp/src/Freeze/DBI.cpp
+++ b/cpp/src/Freeze/DBI.cpp
@@ -11,6 +11,7 @@
#include <Freeze/DBI.h>
#include <Ice/Stream.h>
#include <sys/stat.h>
+#include <sstream>
using namespace std;
using namespace Ice;
@@ -31,7 +32,10 @@ Freeze::DBI::~DBI()
{
if (_db)
{
- _communicator->getLogger()->warning("database has not been closed");
+ ostringstream s;
+ s << "Freeze::DB(\"" << _name << "\"): ";
+ s << "\"" << _name << "\" has not been closed";
+ _communicator->getLogger()->warning(s.str());
}
}
@@ -47,8 +51,11 @@ Freeze::DBI::put(const std::string& key, const ::Ice::ObjectPtr& servant)
if(!_db)
{
+ ostringstream s;
+ s << "Freeze::DB(\"" << _name << "\"): ";
+ s << "\"" << _name << "\" has been closed";
DBException ex;
- ex.message = "Freeze::DB::open: database has been closed";
+ ex.message = s.str();
throw ex;
}
@@ -77,9 +84,11 @@ Freeze::DBI::put(const std::string& key, const ::Ice::ObjectPtr& servant)
ret = txn_begin(_dbenv, 0, &tid, 0);
if (ret != 0)
{
+ ostringstream s;
+ s << "Freeze::DB(\"" << _name << "\"): ";
+ s << "txn_begin: " << db_strerror(ret);
DBException ex;
- ex.message = "txn_begin: ";
- ex.message += db_strerror(ret);
+ ex.message = s.str();
throw ex;
}
@@ -94,9 +103,11 @@ Freeze::DBI::put(const std::string& key, const ::Ice::ObjectPtr& servant)
ret = txn_commit(tid, 0);
if (ret != 0)
{
+ ostringstream s;
+ s << "Freeze::DB(\"" << _name << "\"): ";
+ s << "txn_commit: " << db_strerror(ret);
DBException ex;
- ex.message = "txn_commit: ";
- ex.message += db_strerror(ret);
+ ex.message = s.str();
throw ex;
}
return; // We're done
@@ -110,9 +121,11 @@ Freeze::DBI::put(const std::string& key, const ::Ice::ObjectPtr& servant)
ret = txn_abort(tid);
if (ret != 0)
{
+ ostringstream s;
+ s << "Freeze::DB(\"" << _name << "\"): ";
+ s << "txn_abort: " << db_strerror(ret);
DBException ex;
- ex.message = "txn_abort: ";
- ex.message += db_strerror(ret);
+ ex.message = s.str();
throw ex;
}
break; // Repeat
@@ -123,9 +136,11 @@ Freeze::DBI::put(const std::string& key, const ::Ice::ObjectPtr& servant)
//
// Error, run recovery
//
+ ostringstream s;
+ s << "Freeze::DB(\"" << _name << "\"): ";
+ s << "DB->put: " << db_strerror(ret);
DBException ex;
- ex.message = "DB->put: ";
- ex.message += db_strerror(ret);
+ ex.message = s.str();
throw ex;
}
}
@@ -144,8 +159,11 @@ Freeze::DBI::get(const std::string& key)
if(!_db)
{
+ ostringstream s;
+ s << "Freeze::DB(\"" << _name << "\"): ";
+ s << "\"" << _name << "\" has been closed";
DBException ex;
- ex.message = "Freeze::DB::open: database has been closed";
+ ex.message = s.str();
throw ex;
}
@@ -204,12 +222,11 @@ Freeze::DBI::get(const std::string& key)
default:
{
- //
- // Error, run recovery
- //
+ ostringstream s;
+ s << "Freeze::DB(\"" << _name << "\"): ";
+ s << "DB->get: " << db_strerror(ret);
DBException ex;
- ex.message = "DB->get: ";
- ex.message += db_strerror(ret);
+ ex.message = s.str();
throw ex;
}
}
@@ -227,8 +244,11 @@ Freeze::DBI::del(const std::string& key)
if(!_db)
{
+ ostringstream s;
+ s << "Freeze::DB(\"" << _name << "\"): ";
+ s << "\"" << _name << "\" has been closed";
DBException ex;
- ex.message = "Freeze::DB::open: database has been closed";
+ ex.message = s.str();
throw ex;
}
}
@@ -246,9 +266,11 @@ Freeze::DBI::close()
int ret = _db->close(_db, 0);
if(ret != 0)
{
+ ostringstream s;
+ s << "Freeze::DB(\"" << _name << "\"): ";
+ s << "DB->close: " << db_strerror(ret);
DBException ex;
- ex.message = "DB->close: ";
- ex.message += db_strerror(ret);
+ ex.message = s.str();
throw ex;
}
@@ -263,26 +285,26 @@ Freeze::DBEnvI::DBEnvI(const CommunicatorPtr& communicator, const PropertiesPtr&
_properties(properties),
_dbenv(0)
{
+ _directory = _properties->getProperty("Freeze.Directory");
+ if (_directory.empty())
+ {
+ _directory = ".";
+ }
+
int ret;
ret = db_env_create(&_dbenv, 0);
if (ret != 0)
{
+ ostringstream s;
+ s << "Freeze::DBEnv(\"" << _directory << "\"): ";
+ s << "db_env_create: " << db_strerror(ret);
DBException ex;
- ex.message = "db_env_create: ";
- ex.message += db_strerror(ret);
+ ex.message = s.str();
throw ex;
}
- _directory = _properties->getProperty("Freeze.Directory");
-
- const char* dir = 0;
- if (!_directory.empty())
- {
- dir = _directory.c_str();
- }
-
- ret = _dbenv->open(_dbenv, dir,
+ ret = _dbenv->open(_dbenv, _directory.c_str(),
DB_CREATE |
DB_INIT_LOCK |
DB_INIT_LOG |
@@ -293,9 +315,11 @@ Freeze::DBEnvI::DBEnvI(const CommunicatorPtr& communicator, const PropertiesPtr&
S_IRUSR | S_IWUSR);
if (ret != 0)
{
+ ostringstream s;
+ s << "Freeze::DBEnv(\"" << _directory << "\"): ";
+ s << "DB_ENV->open: " << db_strerror(ret);
DBException ex;
- ex.message = "DB_ENV->open: ";
- ex.message += db_strerror(ret);
+ ex.message = s.str();
throw ex;
}
}
@@ -304,7 +328,10 @@ Freeze::DBEnvI::~DBEnvI()
{
if (_dbenv)
{
- _communicator->getLogger()->warning("database environment object has not been closed");
+ ostringstream s;
+ s << "Freeze::DBEnv(\"" << _directory << "\"): ";
+ s << "\"" << _directory << "\" has not been closed";
+ _communicator->getLogger()->warning(s.str());
}
}
@@ -315,8 +342,11 @@ Freeze::DBEnvI::open(const string& name)
if(!_dbenv)
{
+ ostringstream s;
+ s << "Freeze::DBEnv(\"" << _directory << "\"): ";
+ s << "\"" << _directory << "\" has been closed";
DBException ex;
- ex.message = "Freeze::DBEnv::open: database environment has been closed";
+ ex.message = s.str();
throw ex;
}
@@ -332,18 +362,22 @@ Freeze::DBEnvI::open(const string& name)
ret = db_create(&db, _dbenv, 0);
if(ret != 0)
{
+ ostringstream s;
+ s << "Freeze::DBEnv(\"" << _directory << "\"): ";
+ s << "db_create: " << db_strerror(ret);
DBException ex;
- ex.message = "db_create: ";
- ex.message += db_strerror(ret);
+ ex.message = s.str();
throw ex;
}
ret = db->open(db, name.c_str(), 0, DB_BTREE, DB_CREATE | DB_THREAD, S_IRUSR | S_IWUSR);
if(ret != 0)
{
+ ostringstream s;
+ s << "Freeze::DBEnv(\"" << _directory << "\"): ";
+ s << "DB->open: " << db_strerror(ret);
DBException ex;
- ex.message = "DB->open: ";
- ex.message += db_strerror(ret);
+ ex.message = s.str();
throw ex;
}
@@ -371,9 +405,11 @@ Freeze::DBEnvI::close()
int ret = _dbenv->close(_dbenv, 0);
if(ret != 0)
{
+ ostringstream s;
+ s << "Freeze::DBEnv(\"" << _directory << "\"): ";
+ s << "DB_ENV->close: " << db_strerror(ret);
DBException ex;
- ex.message = "DB_ENV->close: ";
- ex.message += db_strerror(ret);
+ ex.message = s.str();
throw ex;
}
diff --git a/cpp/src/Ice/CommunicatorI.cpp b/cpp/src/Ice/CommunicatorI.cpp
index 14e8016b7f6..05d1aaecc6f 100644
--- a/cpp/src/Ice/CommunicatorI.cpp
+++ b/cpp/src/Ice/CommunicatorI.cpp
@@ -114,7 +114,7 @@ Ice::CommunicatorI::installServantFactory(const ServantFactoryPtr& factory, cons
{
throw CommunicatorDestroyedException(__FILE__, __LINE__);
}
- _instance->valueFactoryManager()->install(factory, id);
+ _instance->servantFactoryManager()->install(factory, id);
}
PropertiesPtr
diff --git a/cpp/src/Ice/Instance.cpp b/cpp/src/Ice/Instance.cpp
index d6e71b97d6a..5be7f7c3dca 100644
--- a/cpp/src/Ice/Instance.cpp
+++ b/cpp/src/Ice/Instance.cpp
@@ -122,10 +122,10 @@ IceInternal::Instance::emitterFactory()
}
ServantFactoryManagerPtr
-IceInternal::Instance::valueFactoryManager()
+IceInternal::Instance::servantFactoryManager()
{
JTCSyncT<JTCMutex> sync(*this);
- return _valueFactoryManager;
+ return _servantFactoryManager;
}
ObjectAdapterFactoryPtr
@@ -262,7 +262,7 @@ IceInternal::Instance::Instance(const CommunicatorPtr& communicator, const Prope
_proxyFactory = new ProxyFactory(this);
_threadPool = new ThreadPool(this);
_emitterFactory = new EmitterFactory(this);
- _valueFactoryManager = new ServantFactoryManager();
+ _servantFactoryManager = new ServantFactoryManager();
_objectAdapterFactory = new ObjectAdapterFactory(this);
_pickler = new PicklerI(this);
}
@@ -282,7 +282,7 @@ IceInternal::Instance::~Instance()
assert(!_proxyFactory);
assert(!_threadPool);
assert(!_emitterFactory);
- assert(!_valueFactoryManager);
+ assert(!_servantFactoryManager);
assert(!_objectAdapterFactory);
assert(!_pickler);
@@ -350,8 +350,7 @@ IceInternal::Instance::destroy()
if(_logger)
{
- // No destroy function defined
- // _logger->destroy();
+ _logger->destroy();
_logger = 0;
}
@@ -375,10 +374,10 @@ IceInternal::Instance::destroy()
_emitterFactory = 0;
}
- if(_valueFactoryManager)
+ if(_servantFactoryManager)
{
- _valueFactoryManager->destroy();
- _valueFactoryManager = 0;
+ _servantFactoryManager->destroy();
+ _servantFactoryManager = 0;
}
if(_objectAdapterFactory)
diff --git a/cpp/src/Ice/Instance.h b/cpp/src/Ice/Instance.h
index 640156c2e29..162f483d9d4 100644
--- a/cpp/src/Ice/Instance.h
+++ b/cpp/src/Ice/Instance.h
@@ -46,7 +46,7 @@ public:
ProxyFactoryPtr proxyFactory();
ThreadPoolPtr threadPool();
EmitterFactoryPtr emitterFactory();
- ServantFactoryManagerPtr valueFactoryManager();
+ ServantFactoryManagerPtr servantFactoryManager();
ObjectAdapterFactoryPtr objectAdapterFactory();
::Ice::PicklerPtr pickler();
@@ -64,7 +64,7 @@ private:
ProxyFactoryPtr _proxyFactory;
ThreadPoolPtr _threadPool;
EmitterFactoryPtr _emitterFactory;
- ServantFactoryManagerPtr _valueFactoryManager;
+ ServantFactoryManagerPtr _servantFactoryManager;
ObjectAdapterFactoryPtr _objectAdapterFactory;
::Ice::PicklerPtr _pickler;
diff --git a/cpp/src/Ice/LoggerI.cpp b/cpp/src/Ice/LoggerI.cpp
index 94fe46eabd5..931ff715ec9 100644
--- a/cpp/src/Ice/LoggerI.cpp
+++ b/cpp/src/Ice/LoggerI.cpp
@@ -41,3 +41,9 @@ Ice::LoggerI::error(const string& message)
JTCSyncT<JTCMutex> sync(*this);
cerr << "error: " << message << endl;
}
+
+void
+Ice::LoggerI::destroy()
+{
+ // Nothing to do
+}
diff --git a/cpp/src/Ice/LoggerI.h b/cpp/src/Ice/LoggerI.h
index dfc41b82e90..9cc18bcc5fa 100644
--- a/cpp/src/Ice/LoggerI.h
+++ b/cpp/src/Ice/LoggerI.h
@@ -23,6 +23,7 @@ public:
virtual void trace(const std::string&, const std::string&);
virtual void warning(const std::string&);
virtual void error(const std::string&);
+ virtual void destroy();
};
}
diff --git a/cpp/src/Ice/ObjectAdapterI.cpp b/cpp/src/Ice/ObjectAdapterI.cpp
index 6a52c0ef8f8..877472ddbb1 100644
--- a/cpp/src/Ice/ObjectAdapterI.cpp
+++ b/cpp/src/Ice/ObjectAdapterI.cpp
@@ -85,6 +85,8 @@ Ice::ObjectAdapterI::deactivate()
_collectorFactories.clear();
_activeServantMap.clear();
_activeServantMapHint = _activeServantMap.begin();
+ _locator->deactivate();
+ _locator = 0;
}
ObjectPrx
diff --git a/cpp/src/Ice/ServantFactoryManager.cpp b/cpp/src/Ice/ServantFactoryManager.cpp
index 924f8729a3e..5064eef27c0 100644
--- a/cpp/src/Ice/ServantFactoryManager.cpp
+++ b/cpp/src/Ice/ServantFactoryManager.cpp
@@ -49,5 +49,9 @@ void
IceInternal::ServantFactoryManager::destroy()
{
JTCSyncT<JTCMutex> sync(*this);
+ for (map<string, ::Ice::ServantFactoryPtr>::iterator p = 0; p != _factories.end(); ++p)
+ {
+ p->second->destroy();
+ }
_factories.clear();
}
diff --git a/cpp/src/Ice/Stream.cpp b/cpp/src/Ice/Stream.cpp
index f544a4c2541..cf3b50a53ef 100644
--- a/cpp/src/Ice/Stream.cpp
+++ b/cpp/src/Ice/Stream.cpp
@@ -820,7 +820,7 @@ IceInternal::Stream::read(ObjectPtr& v, const string& type)
vector<string>::const_iterator p;
for (p = classIds.begin(); p != classIds.end(); ++p)
{
- ServantFactoryPtr factory = _instance->valueFactoryManager()->lookup(*p);
+ ServantFactoryPtr factory = _instance->servantFactoryManager()->lookup(*p);
if (factory)
{
diff --git a/cpp/src/Ice/SysLoggerI.cpp b/cpp/src/Ice/SysLoggerI.cpp
index 05281f68617..0dcab397509 100644
--- a/cpp/src/Ice/SysLoggerI.cpp
+++ b/cpp/src/Ice/SysLoggerI.cpp
@@ -42,3 +42,9 @@ Ice::SysLoggerI::error(const string& message)
JTCSyncT<JTCMutex> sync(*this);
syslog(LOG_ERR, "%s", message.c_str());
}
+
+void
+Ice::SysLoggerI::destroy()
+{
+ // Nothing to do
+}
diff --git a/cpp/src/Ice/SysLoggerI.h b/cpp/src/Ice/SysLoggerI.h
index 2dc7b04542a..f77ead921f6 100644
--- a/cpp/src/Ice/SysLoggerI.h
+++ b/cpp/src/Ice/SysLoggerI.h
@@ -23,6 +23,7 @@ public:
virtual void trace(const std::string&, const std::string&);
virtual void warning(const std::string&);
virtual void error(const std::string&);
+ virtual void destroy();
};
}
diff --git a/cpp/src/Ice/TraceLevels.cpp b/cpp/src/Ice/TraceLevels.cpp
index e35c30c3a96..05eaecbfa9d 100644
--- a/cpp/src/Ice/TraceLevels.cpp
+++ b/cpp/src/Ice/TraceLevels.cpp
@@ -31,15 +31,21 @@ IceInternal::TraceLevels::TraceLevels(const PropertiesPtr& properties) :
value = properties->getProperty(keyBase + networkCat);
if (!value.empty())
+ {
const_cast<int&>(network) = atoi(value.c_str());
+ }
value = properties->getProperty(keyBase + protocolCat);
if (!value.empty())
+ {
const_cast<int&>(protocol) = atoi(value.c_str());
+ }
value = properties->getProperty(keyBase + retryCat);
if (!value.empty())
+ {
const_cast<int&>(retry) = atoi(value.c_str());
+ }
}
IceInternal::TraceLevels::~TraceLevels()
diff --git a/cpp/src/IcePack/Client.cpp b/cpp/src/IcePack/Client.cpp
index c4853e153d1..79053fcdcee 100644
--- a/cpp/src/IcePack/Client.cpp
+++ b/cpp/src/IcePack/Client.cpp
@@ -122,16 +122,16 @@ run(int argc, char* argv[], const CommunicatorPtr& communicator)
}
PropertiesPtr properties = communicator->getProperties();
-
- string adminEndpoints = properties->getProperty("Ice.Adapter.Admin.Endpoints");
- if (adminEndpoints.length() == 0)
+ const char* adminEndpointsProperty = "Ice.Adapter.Admin.Endpoints";
+ string adminEndpoints = properties->getProperty(adminEndpointsProperty);
+ if (adminEndpoints.empty())
{
- cerr << argv[0] << ": `Ice.Adapter.Admin.Endpoints' property is not set" << endl;
+ cerr << argv[0] << ": property `" << adminEndpointsProperty << "' is not set" << endl;
return EXIT_FAILURE;
}
- Ice::ObjectPrx adminBase = communicator->stringToProxy("admin:" + adminEndpoints);
- AdminPrx admin = AdminPrx::checkedCast(adminBase);
+ Ice::ObjectPrx base = communicator->stringToProxy("admin:" + adminEndpoints);
+ AdminPrx admin = AdminPrx::checkedCast(base);
if (!admin)
{
cerr << argv[0] << ": `" << adminEndpoints << "' are no valid administrative endpoints" << endl;
diff --git a/cpp/src/IcePack/Forward.cpp b/cpp/src/IcePack/Forward.cpp
index 6f35d679ef1..4cc4669d356 100644
--- a/cpp/src/IcePack/Forward.cpp
+++ b/cpp/src/IcePack/Forward.cpp
@@ -46,9 +46,6 @@ IcePack::Forward::Forward(const CommunicatorPtr& communicator, const AdminPtr& a
IcePack::Forward::~Forward()
{
-#ifndef WIN32
- _activator->destroy();
-#endif
}
ObjectPtr
@@ -69,6 +66,9 @@ IcePack::Forward::locate(const ObjectAdapterPtr& adapter, const string& identity
}
#ifndef WIN32
+
+ assert(_activator);
+
//
// We only try to activate if we have a path for the server
//
@@ -153,6 +153,7 @@ IcePack::Forward::locate(const ObjectAdapterPtr& adapter, const string& identity
_communicator->getLogger()->error(s.str());
}
}
+
#endif
throw LocationForward(desc.object);
@@ -163,3 +164,12 @@ IcePack::Forward::finished(const ObjectAdapterPtr&, const string&, const ObjectP
{
// Nothing to do
}
+
+void
+IcePack::Forward::deactivate()
+{
+#ifndef WIN32
+ _activator->destroy();
+ _activator = 0;
+#endif
+}
diff --git a/cpp/src/IcePack/Forward.h b/cpp/src/IcePack/Forward.h
index 11bae523b36..990e200d250 100644
--- a/cpp/src/IcePack/Forward.h
+++ b/cpp/src/IcePack/Forward.h
@@ -29,6 +29,7 @@ public:
virtual Ice::ObjectPtr locate(const Ice::ObjectAdapterPtr&, const std::string&, Ice::ObjectPtr&);
virtual void finished(const Ice::ObjectAdapterPtr&, const std::string&, const Ice::ObjectPtr&,
const Ice::ObjectPtr&);
+ virtual void deactivate();
private:
diff --git a/cpp/src/IcePack/Parser.cpp b/cpp/src/IcePack/Parser.cpp
index 377c0ca2546..821ded8ead3 100644
--- a/cpp/src/IcePack/Parser.cpp
+++ b/cpp/src/IcePack/Parser.cpp
@@ -39,14 +39,13 @@ void
IcePack::Parser::usage()
{
cout <<
- "help Print this message.\n"
- "exit, quit Exit this program.\n"
- "add proxy [path [args...]] Add a proxy with an optional path and program\n"
- " arguments.\n"
- "remove proxy Remove a proxy.\n"
- "list List all server descriptions.\n"
- "shutdown Shutdown the IcePack server.\n"
- << endl;
+ "help Print this message.\n"
+ "exit, quit Exit this program.\n"
+ "add PROXY [PATH [ARGS...]] Add PROXY with an optional PATH and program\n"
+ " arguments ARGS.\n"
+ "remove PROXY Remove PROXY.\n"
+ "list List all server descriptions.\n"
+ "shutdown Shut the IcePack server down.\n";
}
void
@@ -54,8 +53,7 @@ IcePack::Parser::add(const list<string>& args)
{
if (args.empty())
{
- error("`add' requires at least a proxy argument\n"
- "(type `help' for more info)");
+ error("`add' requires at least one argument (type `help' for more info)");
return;
}
@@ -87,8 +85,7 @@ IcePack::Parser::remove(const list<string>& args)
{
if (args.size() != 1)
{
- error("`remove' requires exactly one proxy argument\n"
- "(type `help' for more info)");
+ error("`remove' requires exactly one argument (type `help' for more info)");
return;
}
diff --git a/cpp/src/IcePack/Server.cpp b/cpp/src/IcePack/Server.cpp
index d9e35785e68..0af2b57fec3 100644
--- a/cpp/src/IcePack/Server.cpp
+++ b/cpp/src/IcePack/Server.cpp
@@ -58,16 +58,19 @@ run(int argc, char* argv[], const CommunicatorPtr& communicator)
PropertiesPtr properties = communicator->getProperties();
- string adminEndpoints = properties->getProperty("Ice.Adapter.Admin.Endpoints");
- if (adminEndpoints.length() != 0 && !nowarn)
+ const char* adminEndpointsProperty = "Ice.Adapter.Admin.Endpoints";
+ string adminEndpoints = properties->getProperty(adminEndpointsProperty);
+ if (!adminEndpoints.empty() && !nowarn)
{
- cerr << argv[0] << ": warning: administrative endpoints `Ice.Adapter.Admin.Endpoints' enabled" << endl;
+ cerr << argv[0] << ": warning: administrative endpoints property `" << adminEndpointsProperty << "' enabled"
+ << endl;
}
- string forwardEndpoints = properties->getProperty("Ice.Adapter.Forward.Endpoints");
- if (forwardEndpoints.length() == 0)
+ const char* forwardEndpointsProperty = "Ice.Adapter.Forward.Endpoints";
+ string forwardEndpoints = properties->getProperty(forwardEndpointsProperty);
+ if (forwardEndpoints.empty())
{
- cerr << argv[0] << ": `Ice.Adapter.Forward.Endpoints' property is not set" << endl;
+ cerr << argv[0] << ": property `" << forwardEndpointsProperty << "' is not set" << endl;
return EXIT_FAILURE;
}