Glacier2::Instance::Instance(const Ice::CommunicatorPtr& communicator, const Ice::ObjectAdapterPtr& clientAdapter, const Ice::ObjectAdapterPtr& serverAdapter) : _communicator(communicator), _properties(communicator->getProperties()), _logger(communicator->getLogger()), _clientAdapter(clientAdapter), _serverAdapter(serverAdapter) { if(_properties->getPropertyAsIntWithDefault(serverBuffered, 1) > 0) { IceUtil::Time sleepTime = IceUtil::Time::milliSeconds(_properties->getPropertyAsInt(serverSleepTime)); const_cast<RequestQueueThreadPtr&>(_serverRequestQueueThread) = new RequestQueueThread(sleepTime); try { _serverRequestQueueThread->start(); } catch(const IceUtil::Exception&) { _serverRequestQueueThread->destroy(); throw; } } if(_properties->getPropertyAsIntWithDefault(clientBuffered, 1) > 0) { IceUtil::Time sleepTime = IceUtil::Time::milliSeconds(_properties->getPropertyAsInt(clientSleepTime)); const_cast<RequestQueueThreadPtr&>(_clientRequestQueueThread) = new RequestQueueThread(sleepTime); try { _clientRequestQueueThread->start(); } catch(const IceUtil::Exception&) { _clientRequestQueueThread->destroy(); throw; } } const_cast<ProxyVerifierPtr&>(_proxyVerifier) = new ProxyVerifier(communicator); // // If an Ice metrics observer is setup on the communicator, also // enable metrics for IceStorm. // IceInternal::CommunicatorObserverIPtr o = IceInternal::CommunicatorObserverIPtr::dynamicCast(communicator->getObserver()); if(o) { const_cast<Glacier2::Instrumentation::RouterObserverPtr&>(_observer) = new RouterObserverI(o->getFacet(), _properties->getPropertyWithDefault("Glacier2.InstanceName", "Glacier2")); } }
Instance::Instance( const string& instanceName, const string& name, const Ice::CommunicatorPtr& communicator, const Ice::ObjectAdapterPtr& publishAdapter, const Ice::ObjectAdapterPtr& topicAdapter, const Ice::ObjectAdapterPtr& nodeAdapter, const NodePrx& nodeProxy) : _instanceName(instanceName), _serviceName(name), _communicator(communicator), _publishAdapter(publishAdapter), _topicAdapter(topicAdapter), _nodeAdapter(nodeAdapter), _nodeProxy(nodeProxy), _traceLevels(new TraceLevels(name, communicator->getProperties(), communicator->getLogger())), _discardInterval(IceUtil::Time::seconds(communicator->getProperties()->getPropertyAsIntWithDefault( name + ".Discard.Interval", 60))), // default one minute. _flushInterval(IceUtil::Time::milliSeconds(communicator->getProperties()->getPropertyAsIntWithDefault( name + ".Flush.Timeout", 1000))), // default one second. // default one minute. _sendTimeout(communicator->getProperties()->getPropertyAsIntWithDefault(name + ".Send.Timeout", 60 * 1000)), _topicReaper(new TopicReaper()) { try { __setNoDelete(true); Ice::PropertiesPtr properties = communicator->getProperties(); if(properties->getProperty(name + ".TopicManager.AdapterId").empty()) { string p = properties->getProperty(name + ".ReplicatedTopicManagerEndpoints"); if(!p.empty()) { const_cast<Ice::ObjectPrx&>(_topicReplicaProxy) = communicator->stringToProxy("dummy:" + p); } p = properties->getProperty(name + ".ReplicatedPublishEndpoints"); if(!p.empty()) { const_cast<Ice::ObjectPrx&>(_publisherReplicaProxy) = communicator->stringToProxy("dummy:" + p); } } _observers = new Observers(this); _batchFlusher = new IceUtil::Timer(); _timer = new IceUtil::Timer(); // // If an Ice metrics observer is setup on the communicator, also // enable metrics for IceStorm. // IceInternal::CommunicatorObserverIPtr o = IceInternal::CommunicatorObserverIPtr::dynamicCast(communicator->getObserver()); if(o) { _observer = new TopicManagerObserverI(o->getFacet()); } } catch(...) { shutdown(); destroy(); __setNoDelete(false); throw; } __setNoDelete(false); }