diff --git a/src/remote/pv/remote.h b/src/remote/pv/remote.h index ce4d2b5..8c50c2f 100644 --- a/src/remote/pv/remote.h +++ b/src/remote/pv/remote.h @@ -323,7 +323,7 @@ public: virtual epics::pvData::Timer::shared_pointer getTimer() = 0; //virtual TransportRegistry::shared_pointer getTransportRegistry() = 0; - virtual std::tr1::shared_ptr getTransportRegistry() = 0; + virtual TransportRegistry* getTransportRegistry() = 0; diff --git a/src/remoteClient/clientContextImpl.cpp b/src/remoteClient/clientContextImpl.cpp index 0104ee0..71ef89e 100644 --- a/src/remoteClient/clientContextImpl.cpp +++ b/src/remoteClient/clientContextImpl.cpp @@ -4313,9 +4313,9 @@ public: return m_timer; } - virtual TransportRegistry::shared_pointer getTransportRegistry() + virtual TransportRegistry* getTransportRegistry() { - return m_transportRegistry; + return &m_transportRegistry; } virtual Transport::shared_pointer getSearchTransport() @@ -4422,7 +4422,6 @@ private: m_timer.reset(new Timer("pvAccess-client timer", lowPriority)); Context::shared_pointer thisPointer = shared_from_this(); m_connector.reset(new BlockingTCPConnector(thisPointer, m_receiveBufferSize, m_connectionTimeout)); - m_transportRegistry.reset(new TransportRegistry()); m_responseHandler.reset(new ClientResponseHandler(shared_from_this())); @@ -4489,7 +4488,7 @@ private: // wait for all transports to cleanly exit int tries = 40; epics::pvData::int32 transportCount; - while ((transportCount = m_transportRegistry->numberOfActiveTransports()) && tries--) + while ((transportCount = m_transportRegistry.numberOfActiveTransports()) && tries--) epicsThreadSleep(0.025); if (transportCount) @@ -4790,7 +4789,7 @@ private: virtual void configure(epics::pvData::PVStructure::shared_pointer configuration) { // remove? - if (m_transportRegistry->numberOfActiveTransports() > 0) + if (m_transportRegistry.numberOfActiveTransports() > 0) throw std::runtime_error("Configure must be called when there is no transports active."); PVInt::shared_pointer pvStrategy = dynamic_pointer_cast(configuration->getSubField("strategy")); @@ -4814,7 +4813,7 @@ private: virtual void flush() { - m_transportRegistry->toArray(m_flushTransports); + m_transportRegistry.toArray(m_flushTransports); TransportRegistry::transportVector_t::const_iterator iter = m_flushTransports.begin(); while (iter != m_flushTransports.end()) (*iter++)->flushSendQueue(); @@ -4897,7 +4896,7 @@ private: * PVA transport (virtual circuit) registry. * This registry contains all active transports - connections to PVA servers. */ - TransportRegistry::shared_pointer m_transportRegistry; + TransportRegistry m_transportRegistry; /** * Response handler. diff --git a/src/server/pv/serverContextImpl.h b/src/server/pv/serverContextImpl.h index b6fef86..363eb06 100644 --- a/src/server/pv/serverContextImpl.h +++ b/src/server/pv/serverContextImpl.h @@ -37,7 +37,7 @@ public: Channel::shared_pointer getChannel(pvAccessID id); Transport::shared_pointer getSearchTransport(); Configuration::const_shared_pointer getConfiguration(); - TransportRegistry::shared_pointer getTransportRegistry(); + TransportRegistry* getTransportRegistry(); std::map >& getSecurityPlugins(); virtual void newServerDetected(); @@ -203,7 +203,7 @@ private: * PVA transport (virtual circuit) registry. * This registry contains all active transports - connections to PVA servers. */ - TransportRegistry::shared_pointer _transportRegistry; + TransportRegistry _transportRegistry; /** * Response handler. diff --git a/src/server/serverContext.cpp b/src/server/serverContext.cpp index 3fe7e26..573a429 100644 --- a/src/server/serverContext.cpp +++ b/src/server/serverContext.cpp @@ -212,7 +212,6 @@ void ServerContextImpl::initialize() //osiSockAttach(); _timer.reset(new Timer("pvAccess-server timer", lowerPriority)); - _transportRegistry.reset(new TransportRegistry()); ServerContextImpl::shared_pointer thisServerContext = shared_from_this(); _responseHandler.reset(new ServerResponseHandler(thisServerContext)); @@ -284,13 +283,7 @@ void ServerContextImpl::shutdown() void ServerContextImpl::destroyAllTransports() { - // not initialized yet - if (!_transportRegistry.get()) - { - return; - } - - std::auto_ptr transports = _transportRegistry->toArray(); + std::auto_ptr transports = _transportRegistry.toArray(); if (transports.get() == 0) return; @@ -324,7 +317,7 @@ void ServerContextImpl::destroyAllTransports() } // now clear all (release) - _transportRegistry->clear(); + _transportRegistry.clear(); } @@ -439,9 +432,9 @@ Timer::shared_pointer ServerContextImpl::getTimer() return _timer; } -TransportRegistry::shared_pointer ServerContextImpl::getTransportRegistry() +epics::pvAccess::TransportRegistry* ServerContextImpl::getTransportRegistry() { - return _transportRegistry; + return &_transportRegistry; } Channel::shared_pointer ServerContextImpl::getChannel(pvAccessID /*id*/)