1#ifndef SERVERCONTEXTIMPL_H
2#define SERVERCONTEXTIMPL_H
4#ifdef epicsExportSharedSymbols
5# define serverContextImplEpicsExportSharedSymbols
6# undef epicsExportSharedSymbols
11#ifdef serverContextImplEpicsExportSharedSymbols
12# define epicsExportSharedSymbols
13# undef serverContextImplEpicsExportSharedSymbols
16#include <pv/blockingUDP.h>
17#include <pv/blockingTCP.h>
18#include <pv/beaconEmitter.h>
20#include "serverContext.h"
25class ServerContextImpl :
28 public std::tr1::enable_shared_from_this<ServerContextImpl>
30 friend class ServerContext;
32 typedef std::tr1::shared_ptr<ServerContextImpl> shared_pointer;
33 typedef std::tr1::shared_ptr<const ServerContextImpl> const_shared_pointer;
35 static size_t num_instances;
38 virtual ~ServerContextImpl();
41 const ServerGUID& getGUID() OVERRIDE FINAL;
42 const Version& getVersion() OVERRIDE FINAL;
45 void shutdown() OVERRIDE FINAL;
46 void printInfo(
std::
ostream& str,
int lvl) OVERRIDE FINAL;
47 void setBeaconServerStatusProvider(BeaconServerStatusProvider::shared_pointer const & beaconServerStatusProvider) OVERRIDE FINAL;
49 epics::pvData::Timer::shared_pointer getTimer() OVERRIDE FINAL;
50 Channel::shared_pointer getChannel(pvAccessID
id) OVERRIDE FINAL;
51 Transport::shared_pointer getSearchTransport() OVERRIDE FINAL;
52 Configuration::const_shared_pointer getConfiguration() OVERRIDE FINAL;
53 TransportRegistry* getTransportRegistry() OVERRIDE FINAL;
55 virtual
void newServerDetected() OVERRIDE FINAL;
58 epicsTimeStamp& getStartTime() OVERRIDE FINAL;
60 virtual Configuration::shared_pointer getCurrentConfig() OVERRIDE FINAL;
65 static const Version VERSION;
71 float getBeaconPeriod();
77 epics::pvData::int32 getReceiveBufferSize();
83 epics::pvData::int32 getServerPort() OVERRIDE FINAL;
89 epics::pvData::int32 getBroadcastPort() OVERRIDE FINAL;
95 BeaconServerStatusProvider::shared_pointer getBeaconServerStatusProvider();
101 const osiSockAddr *getServerInetAddress();
107 const BlockingUDPTransport::shared_pointer& getBroadcastTransport();
113 virtual const
std::vector<ChannelProvider::shared_pointer>& getChannelProviders() OVERRIDE FINAL;
119 bool isChannelProviderNamePreconfigured();
122 typedef
std::map<
std::
string,
std::tr1::weak_ptr<ChannelProvider> > s_channelNameToProvider_t;
123 s_channelNameToProvider_t s_channelNameToProvider;
135 std::
string _beaconAddressList;
140 IfaceNodeVector _ifaceList;
142 osiSockAddr _ifaceAddr;
148 std::
string _ignoreAddressList;
153 bool _autoBeaconAddressList;
163 epics::pvData::int32 _broadcastPort;
168 epics::pvData::int32 _serverPort;
173 epics::pvData::int32 _receiveBufferSize;
175 epics::pvData::Timer::shared_pointer _timer;
180 BlockingUDPTransportVector _udpTransports;
185 BlockingUDPTransport::shared_pointer _broadcastTransport;
187 BeaconEmitter::shared_pointer _beaconEmitter;
192 BlockingTCPAcceptor::shared_pointer _acceptor;
198 TransportRegistry _transportRegistry;
200 ResponseHandler::shared_pointer _responseHandler;
203 std::vector<ChannelProvider::shared_pointer> _channelProviders;
206 epics::pvData::Mutex _mutex;
209 epics::pvData::Event _runEvent;
214 BeaconServerStatusProvider::shared_pointer _beaconServerStatusProvider;
218 void loadConfiguration();
220 Configuration::const_shared_pointer configuration;
222 epicsTimeStamp _startTime;
duration< int64_t > seconds
basic_ostream< char > ostream
Copyright - See the COPYRIGHT that is included with this distribution.