#ifndef SERVER_H #define SERVER_H #include #include "chancache.h" #include "channel.h" #include struct epicsShareClass GWServerChannelProvider : public epics::pvAccess::ChannelProvider, epics::pvAccess::ChannelFind, std::tr1::enable_shared_from_this { POINTER_DEFINITIONS(GWServerChannelProvider); ChannelCache cache; virtual std::tr1::shared_ptr getChannelProvider(); virtual void cancel() {} virtual std::string getProviderName() { return "GWServer"; } virtual epics::pvAccess::ChannelFind::shared_pointer channelFind(std::string const & channelName, epics::pvAccess::ChannelFindRequester::shared_pointer const & channelFindRequester); using epics::pvAccess::ChannelProvider::createChannel; virtual epics::pvAccess::Channel::shared_pointer createChannel(std::string const & channelName, epics::pvAccess::ChannelRequester::shared_pointer const & channelRequester, short priority, std::string const & addressx); virtual void destroy(); explicit GWServerChannelProvider(const epics::pvAccess::ChannelProvider::shared_pointer& prov); virtual ~GWServerChannelProvider(); }; struct epicsShareClass ServerConfig { int debug; bool interactive; epics::pvData::PVStructure::shared_pointer conf; typedef std::map clients_t; clients_t clients; typedef std::map servers_t; servers_t servers; ServerConfig() :debug(0), interactive(true) {} static std::tr1::shared_ptr instance; }; #endif // SERVER_H