From 3bc9a99c18f06527b7e14cc73b29a285fd4ec13e Mon Sep 17 00:00:00 2001 From: Dwayne Boone Date: Fri, 7 Apr 2006 13:43:58 +0000 Subject: Bug 803 - changed communicator initialization. --- cpp/src/Ice/Application.cpp | 12 ++-- cpp/src/Ice/BasicStream.cpp | 16 ++--- cpp/src/Ice/CommunicatorI.cpp | 36 +++-------- cpp/src/Ice/CommunicatorI.h | 11 +--- cpp/src/Ice/ConnectionFactory.cpp | 16 ++--- cpp/src/Ice/ConnectionI.cpp | 25 ++++---- cpp/src/Ice/ConnectionMonitor.cpp | 4 +- cpp/src/Ice/Incoming.cpp | 20 +++--- cpp/src/Ice/IncomingAsync.cpp | 27 ++++++--- cpp/src/Ice/Initialize.cpp | 57 +++++++++-------- cpp/src/Ice/Instance.cpp | 121 +++++++++---------------------------- cpp/src/Ice/Instance.h | 15 ++--- cpp/src/Ice/LocatorInfo.cpp | 5 +- cpp/src/Ice/ObjectAdapterI.cpp | 36 +++++------ cpp/src/Ice/OutgoingAsync.cpp | 15 +++-- cpp/src/Ice/ProxyFactory.cpp | 4 +- cpp/src/Ice/Reference.cpp | 5 +- cpp/src/Ice/ReferenceFactory.cpp | 27 +++++---- cpp/src/Ice/ServantManager.cpp | 4 +- cpp/src/Ice/TcpAcceptor.cpp | 2 +- cpp/src/Ice/TcpConnector.cpp | 2 +- cpp/src/Ice/TcpTransceiver.cpp | 4 +- cpp/src/Ice/ThreadPool.cpp | 47 +++++++------- cpp/src/Ice/UdpTransceiver.cpp | 14 ++--- cpp/src/IceBox/ServiceManagerI.cpp | 4 +- 25 files changed, 231 insertions(+), 298 deletions(-) (limited to 'cpp/src') diff --git a/cpp/src/Ice/Application.cpp b/cpp/src/Ice/Application.cpp index 074f9f690bc..a46ae1412e9 100644 --- a/cpp/src/Ice/Application.cpp +++ b/cpp/src/Ice/Application.cpp @@ -249,16 +249,14 @@ Ice::Application::main(int argc, char* argv[], const char* configFile, const Log _appName = argv[0]; + InitializationData initData; + initData.logger = logger; if(configFile) { - PropertiesPtr properties = createProperties(); - properties->load(configFile); - _communicator = initializeWithPropertiesAndLogger(argc, argv, properties, logger); - } - else - { - _communicator = initializeWithLogger(argc, argv, logger); + initData.properties = createProperties(); + initData.properties->load(configFile); } + _communicator = initialize(argc, argv, initData); _destroyed = false; // diff --git a/cpp/src/Ice/BasicStream.cpp b/cpp/src/Ice/BasicStream.cpp index cbbc015b925..bcef19cc5ee 100644 --- a/cpp/src/Ice/BasicStream.cpp +++ b/cpp/src/Ice/BasicStream.cpp @@ -1570,7 +1570,7 @@ IceInternal::BasicStream::read(PatchFunc patchFunc, void* patchAddr) } if(_traceSlicing > 0) { - traceSlicing("class", id, _slicingCat, _instance->logger()); + traceSlicing("class", id, _slicingCat, _instance->initializationData().logger); } skipSlice(); // Slice off this derived part -- we don't understand it. readTypeId(id); // Read next id for next iteration. @@ -1670,7 +1670,7 @@ IceInternal::BasicStream::throwException() } if(_traceSlicing > 0) { - traceSlicing("exception", id, _slicingCat, _instance->logger()); + traceSlicing("exception", id, _slicingCat, _instance->initializationData().logger); } skipSlice(); // Slice off what we don't understand. read(id); // Read type id for next slice. @@ -1754,17 +1754,17 @@ IceInternal::BasicStream::readPendingObjects() } catch(const Ice::Exception& ex) { - Ice::Warning out(_instance->logger()); + Ice::Warning out(_instance->initializationData().logger); out << "Ice::Exception raised by ice_postUnmarshal:\n" << ex; } catch(const std::exception& ex) { - Ice::Warning out(_instance->logger()); + Ice::Warning out(_instance->initializationData().logger); out << "std::exception raised by ice_postUnmarshal:\n" << ex.what(); } catch(...) { - Ice::Warning out(_instance->logger()); + Ice::Warning out(_instance->initializationData().logger); out << "unknown exception raised by ice_postUnmarshal"; } } @@ -1816,17 +1816,17 @@ IceInternal::BasicStream::writeInstance(const ObjectPtr& v, Int index) } catch(const Ice::Exception& ex) { - Ice::Warning out(_instance->logger()); + Ice::Warning out(_instance->initializationData().logger); out << "Ice::Exception raised by ice_preMarshal:\n" << ex; } catch(const std::exception& ex) { - Ice::Warning out(_instance->logger()); + Ice::Warning out(_instance->initializationData().logger); out << "std::exception raised by ice_preMarshal:\n" << ex.what(); } catch(...) { - Ice::Warning out(_instance->logger()); + Ice::Warning out(_instance->initializationData().logger); out << "unknown exception raised by ice_preMarshal"; } v->__write(this); diff --git a/cpp/src/Ice/CommunicatorI.cpp b/cpp/src/Ice/CommunicatorI.cpp index 6b2562c4b1b..1d671c55c94 100644 --- a/cpp/src/Ice/CommunicatorI.cpp +++ b/cpp/src/Ice/CommunicatorI.cpp @@ -164,31 +164,19 @@ Ice::CommunicatorI::findObjectFactory(const string& id) const PropertiesPtr Ice::CommunicatorI::getProperties() const { - return _instance->properties(); + return _instance->initializationData().properties; } LoggerPtr Ice::CommunicatorI::getLogger() const { - return _instance->logger(); -} - -void -Ice::CommunicatorI::setLogger(const LoggerPtr& logger) -{ - _instance->logger(logger); + return _instance->initializationData().logger; } StatsPtr Ice::CommunicatorI::getStats() const { - return _instance->stats(); -} - -void -Ice::CommunicatorI::setStats(const StatsPtr& stats) -{ - _instance->stats(stats); + return _instance->initializationData().stats; } RouterPrx @@ -215,16 +203,10 @@ Ice::CommunicatorI::setDefaultLocator(const LocatorPrx& locator) _instance->referenceFactory()->setDefaultLocator(locator); } -void -Ice::CommunicatorI::setDefaultContext(const Context& ctx) -{ - _instance->setDefaultContext(ctx); -} - Ice::Context Ice::CommunicatorI::getDefaultContext() const { - return _instance->getDefaultContext(); + return _instance->initializationData().defaultContext; } PluginManagerPtr @@ -239,12 +221,12 @@ Ice::CommunicatorI::flushBatchRequests() _instance->flushBatchRequests(); } -Ice::CommunicatorI::CommunicatorI(const PropertiesPtr& properties, const LoggerPtr& logger) +Ice::CommunicatorI::CommunicatorI(const InitializationData& initData) { __setNoDelete(true); try { - const_cast(_instance) = new Instance(this, properties, logger); + const_cast(_instance) = new Instance(this, initData); // // Keep a reference to the dynamic library list to ensure @@ -274,8 +256,8 @@ Ice::CommunicatorI::CommunicatorI(const PropertiesPtr& properties, const LoggerP { gcTraceLevel = _instance->traceLevels()->gc; gcTraceCat = _instance->traceLevels()->gcCat; - gcLogger = _instance->logger(); - gcInterval = properties->getPropertyAsInt("Ice.GC.Interval"); + gcLogger = _instance->initializationData().logger; + gcInterval = initData.properties->getPropertyAsInt("Ice.GC.Interval"); gcOnce = false; } if(++communicatorCount == 1) @@ -293,7 +275,7 @@ Ice::CommunicatorI::~CommunicatorI() { if(!_instance->destroyed()) { - Warning out(_instance->logger()); + Warning out(_instance->initializationData().logger); out << "Ice::Communicator::destroy() has not been called"; } } diff --git a/cpp/src/Ice/CommunicatorI.h b/cpp/src/Ice/CommunicatorI.h index 6dc8d1404f3..d7f8ea289c9 100644 --- a/cpp/src/Ice/CommunicatorI.h +++ b/cpp/src/Ice/CommunicatorI.h @@ -38,16 +38,10 @@ public: virtual void removeObjectFactory(const std::string&); virtual ObjectFactoryPtr findObjectFactory(const std::string&) const; - virtual void setDefaultContext(const Context&); virtual Context getDefaultContext() const; - virtual PropertiesPtr getProperties() const; - virtual LoggerPtr getLogger() const; - virtual void setLogger(const LoggerPtr&); - virtual StatsPtr getStats() const; - virtual void setStats(const StatsPtr&); virtual RouterPrx getDefaultRouter() const; virtual void setDefaultRouter(const RouterPrx&); @@ -61,7 +55,7 @@ public: private: - CommunicatorI(const PropertiesPtr&, const LoggerPtr&); + CommunicatorI(const InitializationData&); virtual ~CommunicatorI(); // @@ -70,8 +64,7 @@ private: // void finishSetup(int&, char*[]); - friend ICE_API CommunicatorPtr initializeWithPropertiesAndLogger(int&, char*[], const PropertiesPtr&, - const LoggerPtr&, Int); + friend ICE_API CommunicatorPtr initialize(int&, char*[], InitializationData, Int); friend ICE_API ::IceInternal::InstancePtr IceInternal::getInstance(const ::Ice::CommunicatorPtr&); const ::IceInternal::InstancePtr _instance; diff --git a/cpp/src/Ice/ConnectionFactory.cpp b/cpp/src/Ice/ConnectionFactory.cpp index 6581ee98beb..e7c0df8aedf 100644 --- a/cpp/src/Ice/ConnectionFactory.cpp +++ b/cpp/src/Ice/ConnectionFactory.cpp @@ -315,7 +315,7 @@ IceInternal::OutgoingConnectionFactory::create(const vector& endpt TraceLevelsPtr traceLevels = _instance->traceLevels(); if(traceLevels->retry >= 2) { - Trace out(_instance->logger(), traceLevels->retryCat); + Trace out(_instance->initializationData().logger, traceLevels->retryCat); out << "connection to endpoint failed"; if(moreEndpts || q + 1 != endpoints.end()) @@ -739,7 +739,7 @@ IceInternal::IncomingConnectionFactory::message(BasicStream&, const ThreadPoolPt // Warn about other Ice local exceptions. if(_warn) { - Warning out(_instance->logger()); + Warning out(_instance->initializationData().logger); out << "connection exception:\n" << ex << '\n' << _acceptor->toString(); } return; @@ -827,7 +827,7 @@ IceInternal::IncomingConnectionFactory::IncomingConnectionFactory(const Instance _adapter(adapter), _registeredWithPool(false), _finishedCount(0), - _warn(_instance->properties()->getPropertyAsInt("Ice.Warn.Connections") > 0), + _warn(_instance->initializationData().properties->getPropertyAsInt("Ice.Warn.Connections") > 0), _state(StateHolding) { if(_instance->defaultsAndOverrides()->overrideTimeout) @@ -890,7 +890,7 @@ IceInternal::IncomingConnectionFactory::IncomingConnectionFactory(const Instance catch(const IceUtil::Exception& ex) { { - Error out(_instance->logger()); + Error out(_instance->initializationData().logger); out << "cannot create thread for incoming connection factory:\n" << ex; } @@ -1056,7 +1056,7 @@ IceInternal::IncomingConnectionFactory::run() // Warn about other Ice local exceptions. if(_warn) { - Warning out(_instance->logger()); + Warning out(_instance->initializationData().logger); out << "connection exception:\n" << ex << '\n' << _acceptor->toString(); } } @@ -1156,17 +1156,17 @@ IceInternal::IncomingConnectionFactory::ThreadPerIncomingConnectionFactory::run( } catch(const Exception& ex) { - Error out(_factory->_instance->logger()); + Error out(_factory->_instance->initializationData().logger); out << "exception in thread per incoming connection factory:\n" << _factory->toString() << ex; } catch(const std::exception& ex) { - Error out(_factory->_instance->logger()); + Error out(_factory->_instance->initializationData().logger); out << "std::exception in thread per incoming connection factory:\n" << _factory->toString() << ex.what(); } catch(...) { - Error out(_factory->_instance->logger()); + Error out(_factory->_instance->initializationData().logger); out << "unknown exception in thread per incoming connection factory:\n" << _factory->toString(); } diff --git a/cpp/src/Ice/ConnectionI.cpp b/cpp/src/Ice/ConnectionI.cpp index de3d9872570..e8c80f3577a 100644 --- a/cpp/src/Ice/ConnectionI.cpp +++ b/cpp/src/Ice/ConnectionI.cpp @@ -1215,8 +1215,8 @@ Ice::ConnectionI::createProxy(const Identity& ident) const // vector connections; connections.push_back(const_cast(this)); - ReferencePtr ref = _instance->referenceFactory()->create(ident, _instance->getDefaultContext(), "", - Reference::ModeTwoway, connections); + ReferencePtr ref = _instance->referenceFactory()->create(ident, _instance->initializationData().defaultContext, + "", Reference::ModeTwoway, connections); return _instance->proxyFactory()->referenceToProxy(ref); } @@ -1401,11 +1401,11 @@ Ice::ConnectionI::ConnectionI(const InstancePtr& instance, _type(transceiver->type()), _endpoint(endpoint), _adapter(adapter), - _logger(_instance->logger()), // Cached for better performance. + _logger(_instance->initializationData().logger), // Cached for better performance. _traceLevels(_instance->traceLevels()), // Cached for better performance. _registeredWithPool(false), _finishedCount(0), - _warn(_instance->properties()->getPropertyAsInt("Ice.Warn.Connections") > 0), + _warn(_instance->initializationData().properties->getPropertyAsInt("Ice.Warn.Connections") > 0), _acmTimeout(0), _compressionLevel(1), _nextRequestId(1), @@ -1437,7 +1437,8 @@ Ice::ConnectionI::ConnectionI(const InstancePtr& instance, } int& compressionLevel = const_cast(_compressionLevel); - compressionLevel = _instance->properties()->getPropertyAsIntWithDefault("Ice.Compression.Level", 1); + compressionLevel = + _instance->initializationData().properties->getPropertyAsIntWithDefault("Ice.Compression.Level", 1); if(compressionLevel < 1) { compressionLevel = 1; @@ -2176,7 +2177,7 @@ Ice::ConnectionI::parseMessage(BasicStream& stream, Int& invokeNum, Int& request { if(_warn) { - Warning out(_instance->logger()); + Warning out(_logger); out << "datagram connection exception:\n" << ex << '\n' << _desc; } } @@ -2319,7 +2320,7 @@ Ice::ConnectionI::run() activate(); } - const bool warnUdp = _instance->properties()->getPropertyAsInt("Ice.Warn.Datagrams") > 0; + const bool warnUdp = _instance->initializationData().properties->getPropertyAsInt("Ice.Warn.Datagrams") > 0; bool closed = false; @@ -2397,7 +2398,7 @@ Ice::ConnectionI::run() { if(warnUdp) { - Warning out(_instance->logger()); + Warning out(_logger); out << "DatagramLimitException: maximum size of " << pos << " exceeded"; } throw DatagramLimitException(__FILE__, __LINE__); @@ -2423,7 +2424,7 @@ Ice::ConnectionI::run() { if(_warn) { - Warning out(_instance->logger()); + Warning out(_logger); out << "datagram connection exception:\n" << ex << '\n' << _desc; } continue; @@ -2549,17 +2550,17 @@ Ice::ConnectionI::ThreadPerConnection::run() } catch(const Exception& ex) { - Error out(_connection->_instance->logger()); + Error out(_connection->_logger); out << "exception in thread per connection:\n" << _connection->toString() << ex; } catch(const std::exception& ex) { - Error out(_connection->_instance->logger()); + Error out(_connection->_logger); out << "std::exception in thread per connection:\n" << _connection->toString() << ex.what(); } catch(...) { - Error out(_connection->_instance->logger()); + Error out(_connection->_logger); out << "unknown exception in thread per connection:\n" << _connection->toString(); } diff --git a/cpp/src/Ice/ConnectionMonitor.cpp b/cpp/src/Ice/ConnectionMonitor.cpp index 0ac1a4d4768..0dbf29c1fcd 100644 --- a/cpp/src/Ice/ConnectionMonitor.cpp +++ b/cpp/src/Ice/ConnectionMonitor.cpp @@ -104,7 +104,7 @@ IceInternal::ConnectionMonitor::run() return; } - Error out(_instance->logger()); + Error out(_instance->initializationData().logger); out << "exception in connection monitor:\n" << ex; } catch(...) @@ -115,7 +115,7 @@ IceInternal::ConnectionMonitor::run() return; } - Error out(_instance->logger()); + Error out(_instance->initializationData().logger); out << "unknown exception in connection monitor"; } } diff --git a/cpp/src/Ice/Incoming.cpp b/cpp/src/Ice/Incoming.cpp index 60ca8228aa8..3d6cb1181c5 100644 --- a/cpp/src/Ice/Incoming.cpp +++ b/cpp/src/Ice/Incoming.cpp @@ -62,7 +62,7 @@ IceInternal::IncomingBase::__warning(const Exception& ex) const void IceInternal::IncomingBase::__warning(const string& msg) const { - Warning out(_os.instance()->logger()); + Warning out(_os.instance()->initializationData().logger); out << "dispatch exception: " << msg; out << "\nidentity: " << _current.id; @@ -208,7 +208,7 @@ IceInternal::Incoming::invoke(const ServantManagerPtr& servantManager) ex.operation = _current.operation; } - if(_os.instance()->properties()->getPropertyAsIntWithDefault("Ice.Warn.Dispatch", 1) > 1) + if(_os.instance()->initializationData().properties->getPropertyAsIntWithDefault("Ice.Warn.Dispatch", 1) > 1) { __warning(ex); } @@ -263,7 +263,7 @@ IceInternal::Incoming::invoke(const ServantManagerPtr& servantManager) { _is.endReadEncaps(); - if(_os.instance()->properties()->getPropertyAsIntWithDefault("Ice.Warn.Dispatch", 1) > 0) + if(_os.instance()->initializationData().properties->getPropertyAsIntWithDefault("Ice.Warn.Dispatch", 1) > 0) { __warning(ex); } @@ -287,7 +287,7 @@ IceInternal::Incoming::invoke(const ServantManagerPtr& servantManager) { _is.endReadEncaps(); - if(_os.instance()->properties()->getPropertyAsIntWithDefault("Ice.Warn.Dispatch", 1) > 0) + if(_os.instance()->initializationData().properties->getPropertyAsIntWithDefault("Ice.Warn.Dispatch", 1) > 0) { __warning(ex); } @@ -311,7 +311,7 @@ IceInternal::Incoming::invoke(const ServantManagerPtr& servantManager) { _is.endReadEncaps(); - if(_os.instance()->properties()->getPropertyAsIntWithDefault("Ice.Warn.Dispatch", 1) > 0) + if(_os.instance()->initializationData().properties->getPropertyAsIntWithDefault("Ice.Warn.Dispatch", 1) > 0) { __warning(ex); } @@ -335,7 +335,7 @@ IceInternal::Incoming::invoke(const ServantManagerPtr& servantManager) { _is.endReadEncaps(); - if(_os.instance()->properties()->getPropertyAsIntWithDefault("Ice.Warn.Dispatch", 1) > 0) + if(_os.instance()->initializationData().properties->getPropertyAsIntWithDefault("Ice.Warn.Dispatch", 1) > 0) { __warning(ex); } @@ -361,7 +361,7 @@ IceInternal::Incoming::invoke(const ServantManagerPtr& servantManager) { _is.endReadEncaps(); - if(_os.instance()->properties()->getPropertyAsIntWithDefault("Ice.Warn.Dispatch", 1) > 0) + if(_os.instance()->initializationData().properties->getPropertyAsIntWithDefault("Ice.Warn.Dispatch", 1) > 0) { __warning(ex); } @@ -387,7 +387,7 @@ IceInternal::Incoming::invoke(const ServantManagerPtr& servantManager) { _is.endReadEncaps(); - if(_os.instance()->properties()->getPropertyAsIntWithDefault("Ice.Warn.Dispatch", 1) > 0) + if(_os.instance()->initializationData().properties->getPropertyAsIntWithDefault("Ice.Warn.Dispatch", 1) > 0) { __warning(ex); } @@ -413,7 +413,7 @@ IceInternal::Incoming::invoke(const ServantManagerPtr& servantManager) { _is.endReadEncaps(); - if(_os.instance()->properties()->getPropertyAsIntWithDefault("Ice.Warn.Dispatch", 1) > 0) + if(_os.instance()->initializationData().properties->getPropertyAsIntWithDefault("Ice.Warn.Dispatch", 1) > 0) { __warning(string("std::exception: ") + ex.what()); } @@ -439,7 +439,7 @@ IceInternal::Incoming::invoke(const ServantManagerPtr& servantManager) { _is.endReadEncaps(); - if(_os.instance()->properties()->getPropertyAsIntWithDefault("Ice.Warn.Dispatch", 1) > 0) + if(_os.instance()->initializationData().properties->getPropertyAsIntWithDefault("Ice.Warn.Dispatch", 1) > 0) { __warning("unknown c++ exception"); } diff --git a/cpp/src/Ice/IncomingAsync.cpp b/cpp/src/Ice/IncomingAsync.cpp index 1874e71bd57..8f609e521ee 100644 --- a/cpp/src/Ice/IncomingAsync.cpp +++ b/cpp/src/Ice/IncomingAsync.cpp @@ -115,7 +115,8 @@ IceInternal::IncomingAsync::__exception(const Exception& exc) ex.operation = _current.operation; } - if(_os.instance()->properties()->getPropertyAsIntWithDefault("Ice.Warn.Dispatch", 1) > 1) + if(_os.instance()->initializationData().properties-> + getPropertyAsIntWithDefault("Ice.Warn.Dispatch", 1) > 1) { __warning(ex); } @@ -166,7 +167,8 @@ IceInternal::IncomingAsync::__exception(const Exception& exc) } catch(const UnknownLocalException& ex) { - if(_os.instance()->properties()->getPropertyAsIntWithDefault("Ice.Warn.Dispatch", 1) > 0) + if(_os.instance()->initializationData().properties-> + getPropertyAsIntWithDefault("Ice.Warn.Dispatch", 1) > 0) { __warning(ex); } @@ -186,7 +188,8 @@ IceInternal::IncomingAsync::__exception(const Exception& exc) } catch(const UnknownUserException& ex) { - if(_os.instance()->properties()->getPropertyAsIntWithDefault("Ice.Warn.Dispatch", 1) > 0) + if(_os.instance()->initializationData().properties-> + getPropertyAsIntWithDefault("Ice.Warn.Dispatch", 1) > 0) { __warning(ex); } @@ -206,7 +209,8 @@ IceInternal::IncomingAsync::__exception(const Exception& exc) } catch(const UnknownException& ex) { - if(_os.instance()->properties()->getPropertyAsIntWithDefault("Ice.Warn.Dispatch", 1) > 0) + if(_os.instance()->initializationData().properties-> + getPropertyAsIntWithDefault("Ice.Warn.Dispatch", 1) > 0) { __warning(ex); } @@ -226,7 +230,8 @@ IceInternal::IncomingAsync::__exception(const Exception& exc) } catch(const LocalException& ex) { - if(_os.instance()->properties()->getPropertyAsIntWithDefault("Ice.Warn.Dispatch", 1) > 0) + if(_os.instance()->initializationData().properties-> + getPropertyAsIntWithDefault("Ice.Warn.Dispatch", 1) > 0) { __warning(ex); } @@ -248,7 +253,8 @@ IceInternal::IncomingAsync::__exception(const Exception& exc) } catch(const UserException& ex) { - if(_os.instance()->properties()->getPropertyAsIntWithDefault("Ice.Warn.Dispatch", 1) > 0) + if(_os.instance()->initializationData().properties-> + getPropertyAsIntWithDefault("Ice.Warn.Dispatch", 1) > 0) { __warning(ex); } @@ -270,7 +276,8 @@ IceInternal::IncomingAsync::__exception(const Exception& exc) } catch(const Exception& ex) { - if(_os.instance()->properties()->getPropertyAsIntWithDefault("Ice.Warn.Dispatch", 1) > 0) + if(_os.instance()->initializationData().properties-> + getPropertyAsIntWithDefault("Ice.Warn.Dispatch", 1) > 0) { __warning(ex); } @@ -314,7 +321,8 @@ IceInternal::IncomingAsync::__exception(const std::exception& ex) { try { - if(_os.instance()->properties()->getPropertyAsIntWithDefault("Ice.Warn.Dispatch", 1) > 0) + if(_os.instance()->initializationData().properties-> + getPropertyAsIntWithDefault("Ice.Warn.Dispatch", 1) > 0) { __warning(string("std::exception: ") + ex.what()); } @@ -357,7 +365,8 @@ IceInternal::IncomingAsync::__exception() { try { - if(_os.instance()->properties()->getPropertyAsIntWithDefault("Ice.Warn.Dispatch", 1) > 0) + if(_os.instance()->initializationData().properties-> + getPropertyAsIntWithDefault("Ice.Warn.Dispatch", 1) > 0) { __warning("unknown c++ exception"); } diff --git a/cpp/src/Ice/Initialize.cpp b/cpp/src/Ice/Initialize.cpp index bbe582845ca..b8bd4946e72 100644 --- a/cpp/src/Ice/Initialize.cpp +++ b/cpp/src/Ice/Initialize.cpp @@ -148,28 +148,7 @@ Ice::getDefaultProperties(int& argc, char* argv[]) } CommunicatorPtr -Ice::initialize(int& argc, char* argv[], Int version) -{ - PropertiesPtr properties = getDefaultProperties(argc, argv); - return initializeWithPropertiesAndLogger(argc, argv, properties, 0, version); -} - -CommunicatorPtr -Ice::initializeWithProperties(int& argc, char* argv[], const PropertiesPtr& properties, Int version) -{ - return initializeWithPropertiesAndLogger(argc, argv, properties, 0, version); -} - -CommunicatorPtr -Ice::initializeWithLogger(int& argc, char* argv[], const LoggerPtr& logger, Int version) -{ - PropertiesPtr properties = getDefaultProperties(argc, argv); - return initializeWithPropertiesAndLogger(argc, argv, properties, logger, version); -} - -CommunicatorPtr -Ice::initializeWithPropertiesAndLogger(int& argc, char* argv[], const PropertiesPtr& properties, - const LoggerPtr& logger, Int version) +Ice::initialize(int& argc, char* argv[], InitializationData initData, Int version) { #ifndef ICE_IGNORE_VERSION // @@ -189,16 +168,46 @@ Ice::initializeWithPropertiesAndLogger(int& argc, char* argv[], const Properties } #endif + if(initData.properties == 0) + { + initData.properties = getDefaultProperties(argc, argv); + } StringSeq args = argsToStringSeq(argc, argv); - args = properties->parseIceCommandLineOptions(args); + args = initData.properties->parseIceCommandLineOptions(args); stringSeqToArgs(args, argc, argv); - CommunicatorI* communicatorI = new CommunicatorI(properties, logger); + CommunicatorI* communicatorI = new CommunicatorI(initData); CommunicatorPtr result = communicatorI; // For exception safety. communicatorI->finishSetup(argc, argv); return result; } +CommunicatorPtr +Ice::initializeWithProperties(int& argc, char* argv[], const PropertiesPtr& properties, Int version) +{ + InitializationData initData; + initData.properties = properties; + return initialize(argc, argv, initData, version); +} + +CommunicatorPtr +Ice::initializeWithLogger(int& argc, char* argv[], const LoggerPtr& logger, Int version) +{ + InitializationData initData; + initData.logger = logger; + return initialize(argc, argv, initData, version); +} + +CommunicatorPtr +Ice::initializeWithPropertiesAndLogger(int& argc, char* argv[], const PropertiesPtr& properties, + const LoggerPtr& logger, Int version) +{ + InitializationData initData; + initData.properties = properties; + initData.logger = logger; + return initialize(argc, argv, initData, version); +} + InputStreamPtr Ice::createInputStream(const CommunicatorPtr& communicator, const vector& bytes) { diff --git a/cpp/src/Ice/Instance.cpp b/cpp/src/Ice/Instance.cpp index 2860ba27f50..d6f989597dd 100644 --- a/cpp/src/Ice/Instance.cpp +++ b/cpp/src/Ice/Instance.cpp @@ -76,67 +76,6 @@ IceInternal::Instance::destroyed() const return _state == StateDestroyed; } -PropertiesPtr -IceInternal::Instance::properties() const -{ - // - // No check for destruction. It must be possible to access the - // properties after destruction. - // - // No mutex lock, immutable. - // - return _properties; -} - -LoggerPtr -IceInternal::Instance::logger() const -{ - // - // No check for destruction. It must be possible to access the - // logger after destruction. - // - IceUtil::RecMutex::Lock sync(*this); - return _logger; -} - -void -IceInternal::Instance::logger(const LoggerPtr& logger) -{ - // - // No check for destruction. It must be possible to set the logger - // after destruction (needed by logger plugins for example to - // unset the logger). - // - IceUtil::RecMutex::Lock sync(*this); - _logger = logger; -} - -StatsPtr -IceInternal::Instance::stats() const -{ - IceUtil::RecMutex::Lock sync(*this); - - if(_state == StateDestroyed) - { - throw CommunicatorDestroyedException(__FILE__, __LINE__); - } - - return _stats; -} - -void -IceInternal::Instance::stats(const StatsPtr& stats) -{ - IceUtil::RecMutex::Lock sync(*this); - - if(_state == StateDestroyed) - { - throw CommunicatorDestroyedException(__FILE__, __LINE__); - } - - _stats = stats; -} - TraceLevelsPtr IceInternal::Instance::traceLevels() const { @@ -285,7 +224,7 @@ IceInternal::Instance::serverThreadPool() if(!_serverThreadPool) // Lazy initialization. { - int timeout = _properties->getPropertyAsInt("Ice.ServerIdleTime"); + int timeout = _initData.properties->getPropertyAsInt("Ice.ServerIdleTime"); _serverThreadPool = new ThreadPool(this, "Ice.ThreadPool.Server", timeout); } @@ -381,6 +320,7 @@ IceInternal::Instance::flushBatchRequests() adapterFactory->flushBatchRequests(); } +/* void IceInternal::Instance::setDefaultContext(const Context& ctx) { @@ -406,13 +346,12 @@ IceInternal::Instance::getDefaultContext() const return _defaultContext; } +*/ -IceInternal::Instance::Instance(const CommunicatorPtr& communicator, const PropertiesPtr& properties, - const LoggerPtr& logger) : +IceInternal::Instance::Instance(const CommunicatorPtr& communicator, const InitializationData& initData) : _state(StateActive), - _properties(properties), - _logger(logger), + _initData(initData), _messageSizeMax(0), _clientACM(0), _serverACM(0), @@ -431,8 +370,8 @@ IceInternal::Instance::Instance(const CommunicatorPtr& communicator, const Prope // // StdOut and StdErr redirection // - string stdOutFilename = _properties->getProperty("Ice.StdOut"); - string stdErrFilename = _properties->getProperty("Ice.StdErr"); + string stdOutFilename = _initData.properties->getProperty("Ice.StdOut"); + string stdErrFilename = _initData.properties->getProperty("Ice.StdErr"); if(stdOutFilename != "") { @@ -458,13 +397,13 @@ IceInternal::Instance::Instance(const CommunicatorPtr& communicator, const Prope } } - if(_properties->getPropertyAsInt("Ice.NullHandleAbort") > 0) + if(_initData.properties->getPropertyAsInt("Ice.NullHandleAbort") > 0) { IceUtil::nullHandleAbort = true; } #ifndef _WIN32 - string newUser = _properties->getProperty("Ice.ChangeUser"); + string newUser = _initData.properties->getProperty("Ice.ChangeUser"); if(!newUser.empty()) { struct passwd* pw = getpwnam(newUser.c_str()); @@ -514,9 +453,9 @@ IceInternal::Instance::Instance(const CommunicatorPtr& communicator, const Prope action.sa_flags = 0; sigaction(SIGPIPE, &action, 0); - if(_properties->getPropertyAsInt("Ice.UseSyslog") > 0) + if(_initData.properties->getPropertyAsInt("Ice.UseSyslog") > 0) { - identForOpenlog = _properties->getProperty("Ice.ProgramName"); + identForOpenlog = _initData.properties->getProperty("Ice.ProgramName"); if(identForOpenlog.empty()) { identForOpenlog = ""; @@ -529,40 +468,38 @@ IceInternal::Instance::Instance(const CommunicatorPtr& communicator, const Prope sync.release(); - if(!_logger) + if(!_initData.logger) { #ifdef _WIN32 - if(_properties->getPropertyAsInt("Ice.UseEventLog") > 0) + if(_initData.properties->getPropertyAsInt("Ice.UseEventLog") > 0) { - _logger = new EventLoggerI(_properties->getProperty("Ice.ProgramName")); + _initData.logger = new EventLoggerI(_initData.properties->getProperty("Ice.ProgramName")); } else { - _logger = new LoggerI(_properties->getProperty("Ice.ProgramName"), - _properties->getPropertyAsInt("Ice.Logger.Timestamp") > 0); + _initData.logger = new LoggerI(_initData.properties->getProperty("Ice.ProgramName"), + _initData.properties->getPropertyAsInt("Ice.Logger.Timestamp") > 0); } #else - if(_properties->getPropertyAsInt("Ice.UseSyslog") > 0) + if(_initData.properties->getPropertyAsInt("Ice.UseSyslog") > 0) { - _logger = new SysLoggerI; + _initData.logger = new SysLoggerI; } else { - _logger = new LoggerI(_properties->getProperty("Ice.ProgramName"), - _properties->getPropertyAsInt("Ice.Logger.Timestamp") > 0); + _initData.logger = new LoggerI(_initData.properties->getProperty("Ice.ProgramName"), + _initData.properties->getPropertyAsInt("Ice.Logger.Timestamp") > 0); } #endif } - _stats = 0; // There is no default statistics callback object. - - const_cast(_traceLevels) = new TraceLevels(_properties); + const_cast(_traceLevels) = new TraceLevels(_initData.properties); - const_cast(_defaultsAndOverrides) = new DefaultsAndOverrides(_properties); + const_cast(_defaultsAndOverrides) = new DefaultsAndOverrides(_initData.properties); { static const int defaultMessageSizeMax = 1024; - Int num = _properties->getPropertyAsIntWithDefault("Ice.MessageSizeMax", defaultMessageSizeMax); + Int num = _initData.properties->getPropertyAsIntWithDefault("Ice.MessageSizeMax", defaultMessageSizeMax); if(num < 1) { const_cast(_messageSizeMax) = defaultMessageSizeMax * 1024; // Ignore stupid values. @@ -581,13 +518,13 @@ IceInternal::Instance::Instance(const CommunicatorPtr& communicator, const Prope // // Client ACM enabled by default. Server ACM disabled by default. // - const_cast(_clientACM) = _properties->getPropertyAsIntWithDefault("Ice.ACM.Client", 60); - const_cast(_serverACM) = _properties->getPropertyAsInt("Ice.ACM.Server"); + const_cast(_clientACM) = _initData.properties->getPropertyAsIntWithDefault("Ice.ACM.Client", 60); + const_cast(_serverACM) = _initData.properties->getPropertyAsInt("Ice.ACM.Server"); - const_cast(_threadPerConnection) = _properties->getPropertyAsInt("Ice.ThreadPerConnection") > 0; + const_cast(_threadPerConnection) = _initData.properties->getPropertyAsInt("Ice.ThreadPerConnection") > 0; { - Int stackSize = _properties->getPropertyAsInt("Ice.ThreadPerConnection.StackSize"); + Int stackSize = _initData.properties->getPropertyAsInt("Ice.ThreadPerConnection.StackSize"); if(stackSize < 0) { stackSize = 0; @@ -704,7 +641,7 @@ IceInternal::Instance::finishSetup(int& argc, char* argv[]) // Show process id if requested (but only once). // bool printProcessId = false; - if(!printProcessIdDone && _properties->getPropertyAsInt("Ice.PrintProcessId") > 0) + if(!printProcessIdDone && _initData.properties->getPropertyAsInt("Ice.PrintProcessId") > 0) { // // Safe double-check locking (no dependent variable!) @@ -743,7 +680,7 @@ IceInternal::Instance::finishSetup(int& argc, char* argv[]) { interval = _serverACM; } - interval = _properties->getPropertyAsIntWithDefault("Ice.MonitorConnections", interval); + interval = _initData.properties->getPropertyAsIntWithDefault("Ice.MonitorConnections", interval); if(interval > 0) { _connectionMonitor = new ConnectionMonitor(this, interval); diff --git a/cpp/src/Ice/Instance.h b/cpp/src/Ice/Instance.h index 1e8c5d77e96..ac04a172848 100644 --- a/cpp/src/Ice/Instance.h +++ b/cpp/src/Ice/Instance.h @@ -32,6 +32,7 @@ #include #include #include +#include #include namespace Ice @@ -49,10 +50,7 @@ class Instance : public IceUtil::Shared, public IceUtil::RecMutex public: bool destroyed() const; - Ice::PropertiesPtr properties() const; - Ice::LoggerPtr logger() const; - void logger(const Ice::LoggerPtr&); - Ice::StatsPtr stats() const; + const Ice::InitializationData& initializationData() const { return _initData; } void stats(const Ice::StatsPtr&); TraceLevelsPtr traceLevels() const; DefaultsAndOverridesPtr defaultsAndOverrides() const; @@ -75,12 +73,10 @@ public: Ice::Int clientACM() const; Ice::Int serverACM() const; void flushBatchRequests(); - void setDefaultContext(const ::Ice::Context&); - ::Ice::Context getDefaultContext() const; private: - Instance(const Ice::CommunicatorPtr&, const Ice::PropertiesPtr&, const Ice::LoggerPtr&); + Instance(const Ice::CommunicatorPtr&, const Ice::InitializationData&); virtual ~Instance(); void finishSetup(int&, char*[]); bool destroy(); @@ -93,9 +89,7 @@ private: StateDestroyed }; State _state; - const Ice::PropertiesPtr _properties; // Immutable, not reset by destroy(). - Ice::LoggerPtr _logger; // Not reset by destroy(). - Ice::StatsPtr _stats; // Not reset by destroy(). + Ice::InitializationData _initData; const TraceLevelsPtr _traceLevels; // Immutable, not reset by destroy(). const DefaultsAndOverridesPtr _defaultsAndOverrides; // Immutable, not reset by destroy(). const size_t _messageSizeMax; // Immutable, not reset by destroy(). @@ -116,7 +110,6 @@ private: EndpointFactoryManagerPtr _endpointFactoryManager; DynamicLibraryListPtr _dynamicLibraryList; Ice::PluginManagerPtr _pluginManager; - Ice::Context _defaultContext; }; } diff --git a/cpp/src/Ice/LocatorInfo.cpp b/cpp/src/Ice/LocatorInfo.cpp index 6eb36ad8422..153eda7de18 100644 --- a/cpp/src/Ice/LocatorInfo.cpp +++ b/cpp/src/Ice/LocatorInfo.cpp @@ -386,7 +386,8 @@ IceInternal::LocatorInfo::getEndpoints(const IndirectReferencePtr& ref, int ttl, { if(ref->getInstance()->traceLevels()->location >= 1) { - Trace out(ref->getInstance()->logger(), ref->getInstance()->traceLevels()->locationCat); + Trace out(ref->getInstance()->initializationData().logger, + ref->getInstance()->traceLevels()->locationCat); out << "couldn't contact the locator to retrieve adapter endpoints\n"; if(!ref) { @@ -484,7 +485,7 @@ IceInternal::LocatorInfo::trace(const string& msg, const IndirectReferencePtr& ref, const vector& endpoints) { - Trace out(ref->getInstance()->logger(), ref->getInstance()->traceLevels()->locationCat); + Trace out(ref->getInstance()->initializationData().logger, ref->getInstance()->traceLevels()->locationCat); out << msg << '\n'; if(!ref->getAdapterId().empty()) { diff --git a/cpp/src/Ice/ObjectAdapterI.cpp b/cpp/src/Ice/ObjectAdapterI.cpp index 89d8bfc8c34..759bf371f66 100644 --- a/cpp/src/Ice/ObjectAdapterI.cpp +++ b/cpp/src/Ice/ObjectAdapterI.cpp @@ -75,9 +75,11 @@ Ice::ObjectAdapterI::activate() if(!_printAdapterReadyDone) { locatorInfo = _locatorInfo; - registerProcess = _instance->properties()->getPropertyAsInt(_name + ".RegisterProcess") > 0; - serverId = _instance->properties()->getProperty("Ice.ServerId"); - printAdapterReady = _instance->properties()->getPropertyAsInt("Ice.PrintAdapterReady") > 0; + registerProcess = + _instance->initializationData().properties->getPropertyAsInt(_name + ".RegisterProcess") > 0; + serverId = _instance->initializationData().properties->getProperty("Ice.ServerId"); + printAdapterReady = + _instance->initializationData().properties->getPropertyAsInt("Ice.PrintAdapterReady") > 0; communicator = _communicator; _printAdapterReadyDone = true; } @@ -509,8 +511,8 @@ Ice::ObjectAdapterI::createReverseProxy(const Identity& ident) const // Create a reference and return a reverse proxy for this // reference. // - ReferencePtr ref = _instance->referenceFactory()->create(ident, _instance->getDefaultContext(), "", - Reference::ModeTwoway, connections); + ReferencePtr ref = _instance->referenceFactory()->create(ident, _instance->initializationData().defaultContext, + "", Reference::ModeTwoway, connections); return _instance->proxyFactory()->referenceToProxy(ref); } @@ -781,8 +783,8 @@ Ice::ObjectAdapterI::ObjectAdapterI(const InstancePtr& instance, const Communica _servantManager(new ServantManager(instance, name)), _printAdapterReadyDone(false), _name(name), - _id(instance->properties()->getProperty(name + ".AdapterId")), - _replicaGroupId(instance->properties()->getProperty(name + ".ReplicaGroupId")), + _id(instance->initializationData().properties->getProperty(name + ".AdapterId")), + _replicaGroupId(instance->initializationData().properties->getProperty(name + ".ReplicaGroupId")), _directCount(0), _waitForDeactivate(false) { @@ -804,7 +806,7 @@ Ice::ObjectAdapterI::ObjectAdapterI(const InstancePtr& instance, const Communica // Parse published endpoints. If set, these are used in proxies // instead of the connection factory endpoints. // - string endpts = _instance->properties()->getProperty(name + ".PublishedEndpoints"); + string endpts = _instance->initializationData().properties->getProperty(name + ".PublishedEndpoints"); _publishedEndpoints = parseEndpoints(endpts); if(_publishedEndpoints.empty()) { @@ -818,13 +820,13 @@ Ice::ObjectAdapterI::ObjectAdapterI(const InstancePtr& instance, const Communica _publishedEndpoints.erase(remove_if(_publishedEndpoints.begin(), _publishedEndpoints.end(), not1(Ice::constMemFun(&EndpointI::publish))), _publishedEndpoints.end()); - string router = _instance->properties()->getProperty(_name + ".Router"); + string router = _instance->initializationData().properties->getProperty(_name + ".Router"); if(!router.empty()) { addRouter(RouterPrx::uncheckedCast(_instance->proxyFactory()->stringToProxy(router))); } - string locator = _instance->properties()->getProperty(_name + ".Locator"); + string locator = _instance->initializationData().properties->getProperty(_name + ".Locator"); if(!locator.empty()) { setLocator(LocatorPrx::uncheckedCast(_instance->proxyFactory()->stringToProxy(locator))); @@ -836,8 +838,8 @@ Ice::ObjectAdapterI::ObjectAdapterI(const InstancePtr& instance, const Communica if(!_instance->threadPerConnection()) { - int size = _instance->properties()->getPropertyAsInt(_name + ".ThreadPool.Size"); - int sizeMax = _instance->properties()->getPropertyAsInt(_name + ".ThreadPool.SizeMax"); + int size = _instance->initializationData().properties->getPropertyAsInt(_name + ".ThreadPool.Size"); + int sizeMax = _instance->initializationData().properties->getPropertyAsInt(_name + ".ThreadPool.SizeMax"); if(size > 0 || sizeMax > 0) { _threadPool = new ThreadPool(_instance, _name + ".ThreadPool", 0); @@ -858,12 +860,12 @@ Ice::ObjectAdapterI::~ObjectAdapterI() { if(!_deactivated) { - Warning out(_instance->logger()); + Warning out(_instance->initializationData().logger); out << "object adapter `" << _name << "' has not been deactivated"; } else if(_instance) { - Warning out(_instance->logger()); + Warning out(_instance->initializationData().logger); out << "object adapter `" << _name << "' deactivation had not been waited for"; } else @@ -910,7 +912,7 @@ Ice::ObjectAdapterI::newDirectProxy(const Identity& ident, const string& facet) // Create a reference and return a proxy for this reference. // ReferencePtr ref = _instance->referenceFactory()->create( - ident, _instance->getDefaultContext(), facet, Reference::ModeTwoway, false, endpoints, 0, + ident, _instance->initializationData().defaultContext, facet, Reference::ModeTwoway, false, endpoints, 0, _instance->defaultsAndOverrides()->defaultCollocationOptimization); return _instance->proxyFactory()->referenceToProxy(ref); @@ -923,8 +925,8 @@ Ice::ObjectAdapterI::newIndirectProxy(const Identity& ident, const string& facet // Create an indirect reference with the given adapter id. // ReferencePtr ref = _instance->referenceFactory()->create( - ident, _instance->getDefaultContext(), facet, Reference::ModeTwoway, false, id, 0, _locatorInfo, - _instance->defaultsAndOverrides()->defaultCollocationOptimization, + ident, _instance->initializationData().defaultContext, facet, Reference::ModeTwoway, false, id, 0, + _locatorInfo, _instance->defaultsAndOverrides()->defaultCollocationOptimization, _instance->defaultsAndOverrides()->defaultLocatorCacheTimeout); // diff --git a/cpp/src/Ice/OutgoingAsync.cpp b/cpp/src/Ice/OutgoingAsync.cpp index 024c1f13764..14647308b27 100644 --- a/cpp/src/Ice/OutgoingAsync.cpp +++ b/cpp/src/Ice/OutgoingAsync.cpp @@ -371,9 +371,10 @@ IceInternal::OutgoingAsync::warning(const Exception& ex) const if(__os) // Don't print anything if cleanup() was already called. { ReferencePtr ref = _proxy->__reference(); - if(ref->getInstance()->properties()->getPropertyAsIntWithDefault("Ice.Warn.AMICallback", 1) > 0) + if(ref->getInstance()->initializationData().properties-> + getPropertyAsIntWithDefault("Ice.Warn.AMICallback", 1) > 0) { - Warning out(ref->getInstance()->logger()); + Warning out(ref->getInstance()->initializationData().logger); out << "Ice::Exception raised by AMI callback:\n" << ex; } } @@ -385,9 +386,10 @@ IceInternal::OutgoingAsync::warning(const std::exception& ex) const if(__os) // Don't print anything if cleanup() was already called. { ReferencePtr ref = _proxy->__reference(); - if(ref->getInstance()->properties()->getPropertyAsIntWithDefault("Ice.Warn.AMICallback", 1) > 0) + if(ref->getInstance()->initializationData().properties-> + getPropertyAsIntWithDefault("Ice.Warn.AMICallback", 1) > 0) { - Warning out(ref->getInstance()->logger()); + Warning out(ref->getInstance()->initializationData().logger); out << "std::exception raised by AMI callback:\n" << ex.what(); } } @@ -399,9 +401,10 @@ IceInternal::OutgoingAsync::warning() const if(__os) // Don't print anything if cleanup() was already called. { ReferencePtr ref = _proxy->__reference(); - if(ref->getInstance()->properties()->getPropertyAsIntWithDefault("Ice.Warn.AMICallback", 1) > 0) + if(ref->getInstance()->initializationData().properties-> + getPropertyAsIntWithDefault("Ice.Warn.AMICallback", 1) > 0) { - Warning out(ref->getInstance()->logger()); + Warning out(ref->getInstance()->initializationData().logger); out << "unknown exception raised by AMI callback"; } } diff --git a/cpp/src/Ice/ProxyFactory.cpp b/cpp/src/Ice/ProxyFactory.cpp index 5f9c93cc0a3..8bf47bd1952 100644 --- a/cpp/src/Ice/ProxyFactory.cpp +++ b/cpp/src/Ice/ProxyFactory.cpp @@ -91,7 +91,7 @@ void IceInternal::ProxyFactory::checkRetryAfterException(const LocalException& ex, const ReferencePtr& ref, int& cnt) const { TraceLevelsPtr traceLevels = _instance->traceLevels(); - LoggerPtr logger = _instance->logger(); + LoggerPtr logger = _instance->initializationData().logger; const ObjectNotExistException* one = dynamic_cast(&ex); @@ -206,7 +206,7 @@ IceInternal::ProxyFactory::checkRetryAfterException(const LocalException& ex, co IceInternal::ProxyFactory::ProxyFactory(const InstancePtr& instance) : _instance(instance) { - string str = _instance->properties()->getPropertyWithDefault("Ice.RetryIntervals", "0"); + string str = _instance->initializationData().properties->getPropertyWithDefault("Ice.RetryIntervals", "0"); string::size_type beg; string::size_type end = 0; diff --git a/cpp/src/Ice/Reference.cpp b/cpp/src/Ice/Reference.cpp index d2aa754439d..14c3b3e36f9 100644 --- a/cpp/src/Ice/Reference.cpp +++ b/cpp/src/Ice/Reference.cpp @@ -46,7 +46,7 @@ ReferencePtr IceInternal::Reference::defaultContext() const { ReferencePtr r = _instance->referenceFactory()->copy(this); - r->_context = _instance->getDefaultContext(); + r->_context = _instance->initializationData().defaultContext; return r; } @@ -1471,10 +1471,9 @@ IceInternal::IndirectReference::getConnection(bool& comp) const if(cached) { TraceLevelsPtr traceLevels = getInstance()->traceLevels(); - LoggerPtr logger = getInstance()->logger(); if(traceLevels->retry >= 2) { - Trace out(logger, traceLevels->retryCat); + Trace out(getInstance()->initializationData().logger, traceLevels->retryCat); out << "connection to cached endpoints failed\n" << "removing endpoints from cache and trying one more time\n" << ex; } diff --git a/cpp/src/Ice/ReferenceFactory.cpp b/cpp/src/Ice/ReferenceFactory.cpp index 549b3f4d02f..45f68f0562c 100644 --- a/cpp/src/Ice/ReferenceFactory.cpp +++ b/cpp/src/Ice/ReferenceFactory.cpp @@ -410,8 +410,8 @@ IceInternal::ReferenceFactory::create(const string& str) if(beg == string::npos) { - return create(ident, _instance->getDefaultContext(), facet, mode, secure, "", routerInfo, locatorInfo, - _instance->defaultsAndOverrides()->defaultCollocationOptimization, + return create(ident, _instance->initializationData().defaultContext, facet, mode, secure, "", routerInfo, + locatorInfo, _instance->defaultsAndOverrides()->defaultCollocationOptimization, _instance->defaultsAndOverrides()->defaultLocatorCacheTimeout); } @@ -452,10 +452,11 @@ IceInternal::ReferenceFactory::create(const string& str) ex.str = unknownEndpoints.front(); throw ex; } - else if(unknownEndpoints.size() != 0 && - _instance->properties()->getPropertyAsIntWithDefault("Ice.Warn.Endpoints", 1) > 0) + else if(unknownEndpoints.size() != 0 && + _instance->initializationData().properties-> + getPropertyAsIntWithDefault("Ice.Warn.Endpoints", 1) > 0) { - Warning out(_instance->logger()); + Warning out(_instance->initializationData().logger); out << "Proxy contains unknown endpoints:"; for(unsigned int idx = 0; idx < unknownEndpoints.size(); ++idx) { @@ -463,8 +464,8 @@ IceInternal::ReferenceFactory::create(const string& str) } } - return create(ident, _instance->getDefaultContext(), facet, mode, secure, endpoints, routerInfo, - _instance->defaultsAndOverrides()->defaultCollocationOptimization); + return create(ident, _instance->initializationData().defaultContext, facet, mode, secure, endpoints, + routerInfo, _instance->defaultsAndOverrides()->defaultCollocationOptimization); break; } case '@': @@ -503,8 +504,8 @@ IceInternal::ReferenceFactory::create(const string& str) ex.str = str; throw ex; } - return create(ident, _instance->getDefaultContext(), facet, mode, secure, adapter, routerInfo, - locatorInfo, _instance->defaultsAndOverrides()->defaultCollocationOptimization, + return create(ident, _instance->initializationData().defaultContext, facet, mode, secure, adapter, + routerInfo, locatorInfo, _instance->defaultsAndOverrides()->defaultCollocationOptimization, _instance->defaultsAndOverrides()->defaultLocatorCacheTimeout); break; } @@ -575,14 +576,14 @@ IceInternal::ReferenceFactory::create(const Identity& ident, BasicStream* s) EndpointIPtr endpoint = _instance->endpointFactoryManager()->read(s); endpoints.push_back(endpoint); } - return create(ident, _instance->getDefaultContext(), facet, mode, secure, endpoints, routerInfo, - _instance->defaultsAndOverrides()->defaultCollocationOptimization); + return create(ident, _instance->initializationData().defaultContext, facet, mode, secure, endpoints, + routerInfo, _instance->defaultsAndOverrides()->defaultCollocationOptimization); } else { s->read(adapterId); - return create(ident, _instance->getDefaultContext(), facet, mode, secure, adapterId, routerInfo, - locatorInfo, _instance->defaultsAndOverrides()->defaultCollocationOptimization, + return create(ident, _instance->initializationData().defaultContext, facet, mode, secure, adapterId, + routerInfo, locatorInfo, _instance->defaultsAndOverrides()->defaultCollocationOptimization, _instance->defaultsAndOverrides()->defaultLocatorCacheTimeout); } } diff --git a/cpp/src/Ice/ServantManager.cpp b/cpp/src/Ice/ServantManager.cpp index e4f24c947b4..8fcee751d14 100644 --- a/cpp/src/Ice/ServantManager.cpp +++ b/cpp/src/Ice/ServantManager.cpp @@ -325,7 +325,7 @@ IceInternal::ServantManager::destroy() } catch(const Exception& ex) { - Error out(_instance->logger()); + Error out(_instance->initializationData().logger); out << "exception during locator deactivation:\n" << "object adapter: `" << _adapterName << "'\n" << "locator category: `" << p->first << "'\n" @@ -333,7 +333,7 @@ IceInternal::ServantManager::destroy() } catch(...) { - Error out(_instance->logger()); + Error out(_instance->initializationData().logger); out << "unknown exception during locator deactivation:\n" << "object adapter: `" << _adapterName << "'\n" << "locator category: `" << p->first << "'"; diff --git a/cpp/src/Ice/TcpAcceptor.cpp b/cpp/src/Ice/TcpAcceptor.cpp index 6cc796edabf..aca53d2696b 100644 --- a/cpp/src/Ice/TcpAcceptor.cpp +++ b/cpp/src/Ice/TcpAcceptor.cpp @@ -106,7 +106,7 @@ IceInternal::TcpAcceptor::effectivePort() IceInternal::TcpAcceptor::TcpAcceptor(const InstancePtr& instance, const string& host, int port) : _instance(instance), _traceLevels(instance->traceLevels()), - _logger(instance->logger()), + _logger(instance->initializationData().logger), _backlog(0) { if(_backlog <= 0) diff --git a/cpp/src/Ice/TcpConnector.cpp b/cpp/src/Ice/TcpConnector.cpp index ca21466b676..34e2c618d5e 100644 --- a/cpp/src/Ice/TcpConnector.cpp +++ b/cpp/src/Ice/TcpConnector.cpp @@ -50,7 +50,7 @@ IceInternal::TcpConnector::toString() const IceInternal::TcpConnector::TcpConnector(const InstancePtr& instance, const string& host, int port) : _instance(instance), _traceLevels(instance->traceLevels()), - _logger(instance->logger()) + _logger(instance->initializationData().logger) { getAddress(host, port, _addr); } diff --git a/cpp/src/Ice/TcpTransceiver.cpp b/cpp/src/Ice/TcpTransceiver.cpp index 36525a7e078..a7e51ae2dc5 100644 --- a/cpp/src/Ice/TcpTransceiver.cpp +++ b/cpp/src/Ice/TcpTransceiver.cpp @@ -333,8 +333,8 @@ IceInternal::TcpTransceiver::initialize(int) IceInternal::TcpTransceiver::TcpTransceiver(const InstancePtr& instance, SOCKET fd) : _traceLevels(instance->traceLevels()), - _logger(instance->logger()), - _stats(instance->stats()), + _logger(instance->initializationData().logger), + _stats(instance->initializationData().stats), _fd(fd), _desc(fdToString(fd)) #ifdef _WIN32 diff --git a/cpp/src/Ice/ThreadPool.cpp b/cpp/src/Ice/ThreadPool.cpp index 50d98451e2c..4d291161fbd 100644 --- a/cpp/src/Ice/ThreadPool.cpp +++ b/cpp/src/Ice/ThreadPool.cpp @@ -40,7 +40,7 @@ IceInternal::ThreadPool::ThreadPool(const InstancePtr& instance, const string& p _inUse(0), _load(1.0), _promote(true), - _warnUdp(_instance->properties()->getPropertyAsInt("Ice.Warn.Datagrams") > 0) + _warnUdp(_instance->initializationData().properties->getPropertyAsInt("Ice.Warn.Datagrams") > 0) { // // If we are in thread per connection mode, no thread pool should @@ -64,25 +64,27 @@ IceInternal::ThreadPool::ThreadPool(const InstancePtr& instance, const string& p // possible setting, still allows one level of nesting, and // doesn't require to make the servants thread safe. // - int size = _instance->properties()->getPropertyAsIntWithDefault(_prefix + ".Size", 1); + int size = _instance->initializationData().properties->getPropertyAsIntWithDefault(_prefix + ".Size", 1); if(size < 1) { size = 1; } - int sizeMax = _instance->properties()->getPropertyAsIntWithDefault(_prefix + ".SizeMax", size); + int sizeMax = + _instance->initializationData().properties->getPropertyAsIntWithDefault(_prefix + ".SizeMax", size); if(sizeMax < size) { sizeMax = size; } - int sizeWarn = _instance->properties()->getPropertyAsIntWithDefault(_prefix + ".SizeWarn", sizeMax * 80 / 100); + int sizeWarn = _instance->initializationData().properties-> + getPropertyAsIntWithDefault(_prefix + ".SizeWarn", sizeMax * 80 / 100); const_cast(_size) = size; const_cast(_sizeMax) = sizeMax; const_cast(_sizeWarn) = sizeWarn; - int stackSize = _instance->properties()->getPropertyAsInt(_prefix + ".StackSize"); + int stackSize = _instance->initializationData().properties->getPropertyAsInt(_prefix + ".StackSize"); if(stackSize < 0) { stackSize = 0; @@ -103,7 +105,7 @@ IceInternal::ThreadPool::ThreadPool(const InstancePtr& instance, const string& p catch(const IceUtil::Exception& ex) { { - Error out(_instance->logger()); + Error out(_instance->initializationData().logger); out << "cannot create thread for `" << _prefix << "':\n" << ex; } @@ -130,7 +132,7 @@ IceInternal::ThreadPool::~ThreadPool() } catch(const LocalException& ex) { - Error out(_instance->logger()); + Error out(_instance->initializationData().logger); out << "exception in `" << _prefix << "' while calling closeSocket():\n" << ex; } @@ -140,7 +142,7 @@ IceInternal::ThreadPool::~ThreadPool() } catch(const LocalException& ex) { - Error out(_instance->logger()); + Error out(_instance->initializationData().logger); out << "exception in `" << _prefix << "' while calling closeSocket():\n" << ex; } } @@ -192,7 +194,7 @@ IceInternal::ThreadPool::promoteFollower() if(_inUse == _sizeWarn) { - Warning out(_instance->logger()); + Warning out(_instance->initializationData().logger); out << "thread pool `" << _prefix << "' is running low on threads\n" << "Size=" << _size << ", " << "SizeMax=" << _sizeMax << ", " << "SizeWarn=" << _sizeWarn; } @@ -209,7 +211,7 @@ IceInternal::ThreadPool::promoteFollower() } catch(const IceUtil::Exception& ex) { - Error out(_instance->logger()); + Error out(_instance->initializationData().logger); out << "cannot create thread for `" << _prefix << "':\n" << ex; } } @@ -351,7 +353,7 @@ IceInternal::ThreadPool::run() SocketException ex(__FILE__, __LINE__); ex.error = getSocketErrno(); //throw ex; - Error out(_instance->logger()); + Error out(_instance->initializationData().logger); out << "exception in `" << _prefix << "':\n" << ex; continue; } @@ -443,7 +445,7 @@ IceInternal::ThreadPool::run() // if(fdSet.fd_count == 0) { - Error out(_instance->logger()); + Error out(_instance->initializationData().logger); out << "select() in `" << _prefix << "' returned " << ret << " but no filedescriptor is readable"; continue; @@ -496,7 +498,7 @@ IceInternal::ThreadPool::run() if(loops > 1) { - Error out(_instance->logger()); + Error out(_instance->initializationData().logger); out << "select() in `" << _prefix << "' returned " << ret << " but no filedescriptor is readable"; continue; @@ -508,7 +510,7 @@ IceInternal::ThreadPool::run() map::iterator p = _handlerMap.find(_lastFd); if(p == _handlerMap.end()) { - Error out(_instance->logger()); + Error out(_instance->initializationData().logger); out << "filedescriptor " << _lastFd << " not registered with `" << _prefix << "'"; continue; } @@ -566,7 +568,7 @@ IceInternal::ThreadPool::run() } catch(const LocalException& ex) { - Error out(_instance->logger()); + Error out(_instance->initializationData().logger); out << "exception in `" << _prefix << "' while calling finished():\n" << ex << '\n' << handler->toString(); } @@ -608,9 +610,10 @@ IceInternal::ThreadPool::run() { if(handler->datagram()) { - if(_instance->properties()->getPropertyAsInt("Ice.Warn.Connections") > 0) + if(_instance->initializationData().properties-> + getPropertyAsInt("Ice.Warn.Connections") > 0) { - Warning out(_instance->logger()); + Warning out(_instance->initializationData().logger); out << "datagram connection exception:\n" << ex << '\n' << handler->toString(); } } @@ -638,7 +641,7 @@ IceInternal::ThreadPool::run() } catch(const LocalException& ex) { - Error out(_instance->logger()); + Error out(_instance->initializationData().logger); out << "exception in `" << _prefix << "' while calling message():\n" << ex << '\n' << handler->toString(); } @@ -825,7 +828,7 @@ IceInternal::ThreadPool::read(const EventHandlerPtr& handler) { if(_warnUdp) { - Warning out(_instance->logger()); + Warning out(_instance->initializationData().logger); out << "DatagramLimitException: maximum size of " << pos << " exceeded"; stream.resize(0); stream.i = stream.b.begin(); @@ -856,19 +859,19 @@ IceInternal::ThreadPool::EventHandlerThread::run() } catch(const Exception& ex) { - Error out(_pool->_instance->logger()); + Error out(_pool->_instance->initializationData().logger); out << "exception in `" << _pool->_prefix << "':\n" << ex; promote = true; } catch(const std::exception& ex) { - Error out(_pool->_instance->logger()); + Error out(_pool->_instance->initializationData().logger); out << "std::exception in `" << _pool->_prefix << "':\n" << ex.what(); promote = true; } catch(...) { - Error out(_pool->_instance->logger()); + Error out(_pool->_instance->initializationData().logger); out << "unknown exception in `" << _pool->_prefix << "'"; promote = true; } diff --git a/cpp/src/Ice/UdpTransceiver.cpp b/cpp/src/Ice/UdpTransceiver.cpp index 0df35c71628..9ee1a74ac0f 100644 --- a/cpp/src/Ice/UdpTransceiver.cpp +++ b/cpp/src/Ice/UdpTransceiver.cpp @@ -337,11 +337,11 @@ IceInternal::UdpTransceiver::effectivePort() const IceInternal::UdpTransceiver::UdpTransceiver(const InstancePtr& instance, const string& host, int port) : _traceLevels(instance->traceLevels()), - _logger(instance->logger()), - _stats(instance->stats()), + _logger(instance->initializationData().logger), + _stats(instance->initializationData().stats), _incoming(false), _connect(true), - _warn(instance->properties()->getPropertyAsInt("Ice.Warn.Datagrams") > 0), + _warn(instance->initializationData().properties->getPropertyAsInt("Ice.Warn.Datagrams") > 0), _shutdownReadWrite(false) { try @@ -371,11 +371,11 @@ IceInternal::UdpTransceiver::UdpTransceiver(const InstancePtr& instance, const s IceInternal::UdpTransceiver::UdpTransceiver(const InstancePtr& instance, const string& host, int port, bool connect) : _traceLevels(instance->traceLevels()), - _logger(instance->logger()), - _stats(instance->stats()), + _logger(instance->initializationData().logger), + _stats(instance->initializationData().stats), _incoming(true), _connect(connect), - _warn(instance->properties()->getPropertyAsInt("Ice.Warn.Datagrams") > 0), + _warn(instance->initializationData().properties->getPropertyAsInt("Ice.Warn.Datagrams") > 0), _shutdownReadWrite(false) { try @@ -447,7 +447,7 @@ IceInternal::UdpTransceiver::setBufSize(const InstancePtr& instance) // // Get property for buffer size and check for sanity. // - Int sizeRequested = instance->properties()->getPropertyAsIntWithDefault(prop, dfltSize); + Int sizeRequested = instance->initializationData().properties->getPropertyAsIntWithDefault(prop, dfltSize); if(sizeRequested < _udpOverhead) { Warning out(_logger); diff --git a/cpp/src/IceBox/ServiceManagerI.cpp b/cpp/src/IceBox/ServiceManagerI.cpp index f60df6ad3c2..7c914adc112 100644 --- a/cpp/src/IceBox/ServiceManagerI.cpp +++ b/cpp/src/IceBox/ServiceManagerI.cpp @@ -334,7 +334,9 @@ IceBox::ServiceManagerI::start(const string& service, const string& entryPoint, } argv[argc] = 0; - info.communicator = initializeWithProperties(argc, argv, serviceProperties); + InitializationData initData; + initData.properties = serviceProperties; + info.communicator = initialize(argc, argv, initData); for(i = 0; i < argc + 1; ++i) { -- cgit v1.2.3