7 #ifndef TRANSPORTREGISTRY_H 8 #define TRANSPORTREGISTRY_H 15 #ifdef epicsExportSharedSymbols 16 # define transportRegistryEpicsExportSharedSymbols 17 # undef epicsExportSharedSymbols 23 #include <pv/pvType.h> 24 #include <pv/epicsException.h> 25 #include <pv/sharedPtr.h> 27 #ifdef transportRegistryEpicsExportSharedSymbols 28 # define epicsExportSharedSymbols 29 # undef transportRegistryEpicsExportSharedSymbols 32 #include <pv/remote.h> 33 #include <pv/inetAddressUtil.h> 38 class TransportRegistry {
44 epics::pvData::int16 prio;
45 Key(
const osiSockAddr& a, epics::pvData::int16 p) :addr(a), prio(p) {}
46 bool operator<(
const Key& o)
const;
49 typedef std::map<Key, Transport::shared_pointer> transports_t;
50 typedef std::map<Key, std::tr1::shared_ptr<epics::pvData::Mutex> > locks_t;
53 POINTER_DEFINITIONS(TransportRegistry);
55 typedef std::vector<Transport::shared_pointer> transportVector_t;
58 TransportRegistry*
const owner;
60 std::tr1::shared_ptr<epics::pvData::Mutex> mutex;
64 Reservation(TransportRegistry *owner,
const osiSockAddr& address, epics::pvData::int16 prio);
68 TransportRegistry() {}
71 Transport::shared_pointer get(
const osiSockAddr& address, epics::pvData::int16 prio);
72 void install(
const Transport::shared_pointer& ptr);
73 Transport::shared_pointer remove(Transport::shared_pointer
const & transport);
78 void toArray(transportVector_t & transportArray,
const osiSockAddr *dest=0);
81 transports_t transports;
85 epics::pvData::Mutex _mutex;
virtual void authNZMessage(epics::pvData::PVStructure::shared_pointer const &data)=0
Pass data to the active security plug-in session.