13#include <pv/sharedPtr.h>
14#include <pv/sharedVector.h>
16namespace epics{
namespace pvAccess{
19class ChannelRequester;
110 std::tr1::shared_ptr<Impl> impl;
118 virtual std::tr1::shared_ptr<epics::pvAccess::Channel>
connect(
const std::tr1::shared_ptr<epics::pvAccess::ChannelProvider>& provider,
119 const std::string& name,
120 const std::tr1::shared_ptr<epics::pvAccess::ChannelRequester>& requester) =0;
128 typedef builders_t::const_iterator const_iterator;
141 void add(
const std::string& name,
142 const std::tr1::shared_ptr<ChannelBuilder>& builder);
146 std::tr1::shared_ptr<ChannelBuilder>
remove(
const std::string& name);
149 std::tr1::shared_ptr<epics::pvAccess::ChannelProvider>
provider()
const;
152 const_iterator
begin()
const;
153 const_iterator
end()
const;
168 std::tr1::shared_ptr<Impl> impl;
175 const ::epics::pvAccess::PeerInfo* peerinfo;
176 Search(
const std::string& name, const ::epics::pvAccess::PeerInfo* peer)
177 :isclaimed(
false),cname(name),peerinfo(peer)
181 const std::string&
name()
const {
return cname; }
189 const ::epics::pvAccess::PeerInfo*
peer()
const {
return peerinfo; }
208 virtual std::tr1::shared_ptr<epics::pvAccess::Channel>
createChannel(
const std::tr1::shared_ptr<epics::pvAccess::ChannelProvider>& provider,
209 const std::string& name,
210 const std::tr1::shared_ptr<epics::pvAccess::ChannelRequester>& requester) =0;
219 const std::tr1::shared_ptr<Handler>& handler);
222 Handler::shared_pointer getHandler()
const;
227 std::tr1::shared_ptr<epics::pvAccess::ChannelProvider>
provider()
const;
constexpr auto begin(_Container &__cont) -> decltype(__cont.begin())
constexpr auto end(_Container &__cont) -> decltype(__cont.end())
An instance of a Client or Server.
A single client serach request. May be associated with more than one name.
void claim()
Has been claimed()
bool claimed() const
Stake a claim.
const ::epics::pvAccess::PeerInfo * peer() const
Information about peer making search request.
const std::string & name() const
The name being queried.
A Provider which has no pre-configured list of names.
DynamicProvider(const std::string &name, const std::tr1::shared_ptr< Handler > &handler)
Build a new provider.
std::tr1::shared_ptr< epics::pvAccess::ChannelProvider > provider() const
Fetch the underlying ChannelProvider. Usually to build a ServerContext around.
A Provider based on a list of SharedPV instance.
void close(bool destroy=false)
Call Channelbuilder::close(destroy) for all currently added ChannelBuilders.
void add(const std::string &name, const std::tr1::shared_ptr< ChannelBuilder > &builder)
Add a PV (eg. SharedPV) to this provider.
StaticProvider(const std::string &name)
Build a new, empty, provider.
std::tr1::shared_ptr< epics::pvAccess::ChannelProvider > provider() const
Fetch the underlying ChannelProvider. Usually to build a ServerContext around.
std::tr1::shared_ptr< ChannelBuilder > remove(const std::string &name)
Remove a PV.
Copyright - See the COPYRIGHT that is included with this distribution.
Callbacks associated with DynamicProvider.
virtual std::tr1::shared_ptr< epics::pvAccess::Channel > createChannel(const std::tr1::shared_ptr< epics::pvAccess::ChannelProvider > &provider, const std::string &name, const std::tr1::shared_ptr< epics::pvAccess::ChannelRequester > &requester)=0
Called when a client is attempting to open a new channel to this SharedPV.
virtual void listChannels(names_type &names, bool &dynamic)
Called when a client is requesting a list of channel names we provide. Callee should set dynamic=fals...
virtual void destroy()
Called when the last reference to a DynamicProvider is released. Should close any channels.
virtual void hasChannels(search_type &name)=0
Called with name(s) which some client is searching for.
Interface for something which can provide Channels. aka A "PV". Typically a SharedPV.
virtual void disconnect(bool destroy, const epics::pvAccess::ChannelProvider *provider)=0
Disconnect all Channels created through the given ChannelProvider.
virtual std::tr1::shared_ptr< epics::pvAccess::Channel > connect(const std::tr1::shared_ptr< epics::pvAccess::ChannelProvider > &provider, const std::string &name, const std::tr1::shared_ptr< epics::pvAccess::ChannelRequester > &requester)=0
called to create a new Channel through the given ChannelProvider