13#ifdef epicsExportSharedSymbols
14# define pvAccessEpicsExportSharedSymbols
15# undef epicsExportSharedSymbols
19#include <pv/createRequest.h>
23#ifdef pvAccessEpicsExportSharedSymbols
24# define epicsExportSharedSymbols
25# undef pvAccessEpicsExportSharedSymbols
28#include <pv/pvaVersion.h>
29#include <pv/destroyable.h>
30#include <pv/monitor.h>
45# if __cplusplus>=201103L
52# if __cplusplus>=201103L
53# define OVERRIDE override
64using epics::pvData::Requester;
65using epics::pvData::RequesterPtr;
66using epics::pvData::MessageType;
67using epics::pvData::getMessageTypeName;
90class epicsShareClass Lockable
93 POINTER_DEFINITIONS(Lockable);
95 virtual ~Lockable() {}
97 virtual void lock() {}
98 virtual void unlock() {}
104class epicsShareClass ScopedLock {
105 EPICS_NOT_COPYABLE(ScopedLock)
108 explicit ScopedLock(Lockable::shared_pointer
const & li)
109 : lockable(li), locked(
true) {
131 bool ownsLock()
const {
137 Lockable::shared_pointer
const lockable;
144class ChannelFindRequester;
160 inline Counter() :tx(0u), rx(0u) {}
164 Counter transportBytes;
165 Counter operationBytes;
168 inline Stats() :populated(
false) {}
173 virtual void stats(Stats& s)
const =0;
179 POINTER_DEFINITIONS(ChannelBaseRequester);
181 static size_t num_instances;
183 ChannelBaseRequester();
184 virtual ~ChannelBaseRequester();
208class epicsShareClass ChannelRequest :
public virtual Destroyable,
public Lockable {
210 POINTER_DEFINITIONS(ChannelRequest);
212 static size_t num_instances;
215 virtual ~ChannelRequest();
240 EPICS_NOT_COPYABLE(ChannelRequest)
252 typedef Monitor operation_type;
276 virtual void unlisten(MonitorPtr
const & monitor) = 0;
302 epics::pvData::PVArray::shared_pointer
const &
putArray,
303 size_t offset = 0,
size_t count = 0,
size_t stride = 1) = 0;
349 ChannelArray::shared_pointer
const & channelArray,
350 epics::pvData::Array::const_shared_pointer
const & array) = 0;
362 ChannelArray::shared_pointer
const & channelArray) = 0;
376 ChannelArray::shared_pointer
const & channelArray,
377 epics::pvData::PVArray::shared_pointer
const & pvArray) = 0;
387 ChannelArray::shared_pointer
const & channelArray,
397 ChannelArray::shared_pointer
const & channelArray) = 0;
404class epicsShareClass ChannelFind :
public Destroyable {
405 EPICS_NOT_COPYABLE(ChannelFind)
407 POINTER_DEFINITIONS(ChannelFind);
408 typedef ChannelFindRequester requester_type;
411 virtual ~ChannelFind() {}
413 virtual std::tr1::shared_ptr<ChannelProvider> getChannelProvider() = 0;
414 virtual void cancel() = 0;
418 static ChannelFind::shared_pointer buildDummy(
const std::tr1::shared_ptr<ChannelProvider>& provider);
426class epicsShareClass ChannelFindRequester {
428 POINTER_DEFINITIONS(ChannelFindRequester);
429 typedef ChannelFind operation_type;
431 virtual ~ChannelFindRequester() {}
436 virtual void channelFindResult(
437 const epics::pvData::Status& status,
438 ChannelFind::shared_pointer
const & channelFind,
462 virtual std::tr1::shared_ptr<const PeerInfo> getPeerInfo()
463 {
return std::tr1::shared_ptr<const PeerInfo>(); }
469class epicsShareClass ChannelListRequester {
471 POINTER_DEFINITIONS(ChannelListRequester);
472 typedef ChannelFind operation_type;
474 virtual ~ChannelListRequester() {}
479 virtual void channelListResult(
480 const epics::pvData::Status& status,
481 ChannelFind::shared_pointer
const & channelFind,
482 epics::pvData::PVStringArray::const_svector
const & channelNames,
483 bool hasDynamic) = 0;
526 ChannelGet::shared_pointer
const & channelGet,
527 epics::pvData::Structure::const_shared_pointer
const & structure) = 0;
542 ChannelGet::shared_pointer
const & channelGet,
543 epics::pvData::PVStructure::shared_pointer
const & pvStructure,
544 epics::pvData::BitSet::shared_pointer
const & bitSet) = 0;
584 ChannelProcess::shared_pointer
const & channelProcess) = 0;
593 ChannelProcess::shared_pointer
const & channelProcess) = 0;
620 epics::pvData::PVStructure::shared_pointer
const & pvPutStructure,
621 epics::pvData::BitSet::shared_pointer
const & putBitSet) = 0;
650 ChannelPut::shared_pointer
const & channelPut,
651 epics::pvData::Structure::const_shared_pointer
const & structure) = 0;
660 ChannelPut::shared_pointer
const & channelPut) = 0;
674 ChannelPut::shared_pointer
const & channelPut,
675 epics::pvData::PVStructure::shared_pointer
const & pvStructure,
676 epics::pvData::BitSet::shared_pointer
const & bitSet) = 0;
698 epics::pvData::PVStructure::shared_pointer
const & pvPutStructure,
699 epics::pvData::BitSet::shared_pointer
const & putBitSet) = 0;
735 ChannelPutGet::shared_pointer
const & channelPutGet,
736 epics::pvData::Structure::const_shared_pointer
const & putStructure,
737 epics::pvData::Structure::const_shared_pointer
const & getStructure) = 0;
748 ChannelPutGet::shared_pointer
const & channelPutGet,
749 epics::pvData::PVStructure::shared_pointer
const & pvGetStructure,
750 epics::pvData::BitSet::shared_pointer
const & getBitSet) = 0;
761 ChannelPutGet::shared_pointer
const & channelPutGet,
762 epics::pvData::PVStructure::shared_pointer
const & pvPutStructure,
763 epics::pvData::BitSet::shared_pointer
const & putBitSet) = 0;
774 ChannelPutGet::shared_pointer
const & channelPutGet,
775 epics::pvData::PVStructure::shared_pointer
const & pvGetStructure,
776 epics::pvData::BitSet::shared_pointer
const & getBitSet) = 0;
804 virtual void request(epics::pvData::PVStructure::shared_pointer
const & pvArgument) = 0;
832 ChannelRPC::shared_pointer
const & operation) = 0;
845 ChannelRPC::shared_pointer
const & operation,
846 epics::pvData::PVStructure::shared_pointer
const & pvResponse) = 0;
886class epicsShareClass Channel :
890 EPICS_NOT_COPYABLE(Channel)
892 POINTER_DEFINITIONS(Channel);
895 static size_t num_instances;
907 NEVER_CONNECTED, CONNECTED, DISCONNECTED, DESTROYED
910 static const char* ConnectionStateNames[];
989 ChannelProcessRequester::shared_pointer
const & requester,
990 epics::pvData::PVStructure::shared_pointer
const & pvRequest);
1010 ChannelGetRequester::shared_pointer
const & requester,
1011 epics::pvData::PVStructure::shared_pointer
const & pvRequest);
1031 ChannelPutRequester::shared_pointer
const & requester,
1032 epics::pvData::PVStructure::shared_pointer
const & pvRequest);
1052 ChannelPutGetRequester::shared_pointer
const & requester,
1053 epics::pvData::PVStructure::shared_pointer
const & pvRequest);
1073 ChannelRPCRequester::shared_pointer
const & requester,
1074 epics::pvData::PVStructure::shared_pointer
const & pvRequest);
1094 MonitorRequester::shared_pointer
const & requester,
1095 epics::pvData::PVStructure::shared_pointer
const & pvRequest);
1120 ChannelArrayRequester::shared_pointer
const & requester,
1121 epics::pvData::PVStructure::shared_pointer
const & pvRequest);
1141class epicsShareClass ChannelRequester :
public virtual Requester
1143 ChannelRequester(
const ChannelRequester&);
1144 ChannelRequester&
operator=(
const ChannelRequester&);
1146 POINTER_DEFINITIONS(ChannelRequester);
1147 typedef Channel operation_type;
1149 static size_t num_instances;
1152 virtual ~ChannelRequester();
1215 static ChannelRequester::shared_pointer build();
1222 IMMEDIATE, DELAYED, USER_CONTROLED
1232 EPICS_NOT_COPYABLE(ChannelProvider)
1234 POINTER_DEFINITIONS(ChannelProvider);
1249 static size_t num_instances;
1252 virtual ~ChannelProvider();
1271 ChannelFindRequester::shared_pointer
const & requester) = 0;
1282 virtual ChannelFind::shared_pointer
channelList(ChannelListRequester::shared_pointer
const & requester);
1288 ChannelRequester::shared_pointer
const & requester = DefaultChannelRequester::build(),
1321class epicsShareClass ChannelProviderFactory {
1322 EPICS_NOT_COPYABLE(ChannelProviderFactory)
1324 POINTER_DEFINITIONS(ChannelProviderFactory);
1326 ChannelProviderFactory() {}
1327 virtual ~ChannelProviderFactory() {}
1346 return newInstance(std::tr1::shared_ptr<Configuration>());
1353 virtual ChannelProvider::shared_pointer
newInstance(
const std::tr1::shared_ptr<Configuration>&) {
1354 throw std::logic_error(
"This ChannelProviderFactory does not support non-default configurations");
1361template<
class Prov
ider>
1362struct SimpleChannelProviderFactory :
public ChannelProviderFactory
1364 SimpleChannelProviderFactory(
const std::string& name) :pname(name) {}
1365 virtual ~SimpleChannelProviderFactory() {}
1372 ChannelProvider::shared_pointer ret(shared.lock());
1374 std::tr1::shared_ptr<Provider> inst(
new Provider(std::tr1::shared_ptr<Configuration>()));
1375 shared = ret = inst;
1380 virtual ChannelProvider::shared_pointer
newInstance(
const std::tr1::shared_ptr<Configuration>& conf) OVERRIDE FINAL
1382 std::tr1::shared_ptr<Provider> ret(
new Provider(conf));
1388 epics::pvData::Mutex sharedM;
1389 ChannelProvider::weak_pointer shared;
1396template<
class Prov
ider>
1397struct SingletonChannelProviderFactory :
public ChannelProviderFactory
1399 SingletonChannelProviderFactory(
const std::string& name,
1400 const std::tr1::shared_ptr<const Configuration>& conf = std::tr1::shared_ptr<const Configuration>())
1401 :pname(name), config(conf)
1403 virtual ~SingletonChannelProviderFactory() {}
1410 ChannelProvider::shared_pointer ret(shared.lock());
1412 std::tr1::shared_ptr<Provider> inst(
new Provider(config));
1413 shared = ret = inst;
1418 virtual ChannelProvider::shared_pointer
newInstance(
const std::tr1::shared_ptr<Configuration>& conf) OVERRIDE FINAL
1425 epics::pvData::Mutex sharedM;
1426 ChannelProvider::weak_pointer shared;
1427 const std::tr1::shared_ptr<const Configuration> config;
1433class epicsShareClass ChannelProviderRegistry {
1435 POINTER_DEFINITIONS(ChannelProviderRegistry);
1439 virtual ~ChannelProviderRegistry() {}
1443 static ChannelProviderRegistry::shared_pointer
build();
1448 static ChannelProviderRegistry::shared_pointer
clients();
1453 static ChannelProviderRegistry::shared_pointer
servers();
1468 const std::tr1::shared_ptr<Configuration>& conf = std::tr1::shared_ptr<Configuration>());
1485 virtual bool add(
const ChannelProviderFactory::shared_pointer& fact,
bool replace=
true);
1488 template<
class Prov
ider>
1492 typename Factory::shared_pointer fact(
new Factory(name));
1493 return add(fact,
replace) ? fact :
typename Factory::shared_pointer();
1496 typedef ChannelProvider::shared_pointer (*factoryfn_t)(
const std::tr1::shared_ptr<Configuration>&);
1498 ChannelProviderFactory::shared_pointer
add(
const std::string& name, factoryfn_t,
bool replace=
true);
1501 template<
class Prov
ider>
1503 const std::tr1::shared_ptr<const Configuration>& conf = std::tr1::shared_ptr<const Configuration>(),
1507 typename Factory::shared_pointer fact(
new Factory(name, conf));
1508 return add(fact,
replace) ? fact :
typename Factory::shared_pointer();
1515 ChannelProviderFactory::shared_pointer
addSingleton(
const ChannelProvider::shared_pointer& provider,
1522 virtual bool remove(
const ChannelProviderFactory::shared_pointer& factory);
1530 ChannelProviderRegistry() {}
1531 friend struct CompatRegistry;
1533 epics::pvData::Mutex mutex;
1535 providers_t providers;
1543#if __GNUC__>4 || (__GNUC__==4&&__GNUC_MINOR__>=3)
1545#define gCPRMSG __attribute__((error("ChannelProvider shared_ptr ownership rules have changed.")))
1547epicsShareFunc ChannelProviderRegistry::shared_pointer getChannelProviderRegistry() gCPRMSG;
1549epicsShareFunc
void registerChannelProviderFactory(ChannelProviderFactory::shared_pointer const & channelProviderFactory) gCPRMSG;
1551epicsShareFunc
void unregisterChannelProviderFactory(ChannelProviderFactory::shared_pointer const & channelProviderFactory) gCPRMSG;
1553epicsShareFunc
void unregisterAllChannelProviderFactory() gCPRMSG;
1570namespace epics {
namespace pvData {
constexpr complex< _Tp > & operator=(const _Tp &)
basic_ostream< char > ostream
valarray< size_t > stride() const
constexpr void replace(_ForwardIterator __first, _ForwardIterator __last, const _Tp &__old_value, const _Tp &__new_value)
constexpr iterator_traits< _InputIterator >::difference_type count(_InputIterator __first, _InputIterator __last, const _Tp &__value)
void lock(_L1 &__l1, _L2 &__l2, _L3 &... __l3)
basic_string< char > string
Request to put and get Array Data.
virtual void putArray(epics::pvData::PVArray::shared_pointer const &putArray, size_t offset=0, size_t count=0, size_t stride=1)=0
put to the remote array.
virtual void getLength()=0
Get the length.
virtual void setLength(size_t length)=0
Set the length and/or the capacity.
virtual void getArray(size_t offset=0, size_t count=0, size_t stride=1)=0
get from the remote array.
The Requester for a ChannelArray.
virtual void channelArrayConnect(const epics::pvData::Status &status, ChannelArray::shared_pointer const &channelArray, epics::pvData::Array::const_shared_pointer const &array)=0
Underlying Channel is connected and operation setup is complete.
virtual void setLengthDone(const epics::pvData::Status &status, ChannelArray::shared_pointer const &channelArray)=0
The request is done.
virtual void getArrayDone(const epics::pvData::Status &status, ChannelArray::shared_pointer const &channelArray, epics::pvData::PVArray::shared_pointer const &pvArray)=0
The request is done.
virtual void getLengthDone(const epics::pvData::Status &status, ChannelArray::shared_pointer const &channelArray, size_t length)=0
The request is done.
virtual void putArrayDone(const epics::pvData::Status &status, ChannelArray::shared_pointer const &channelArray)=0
The request is done.
Request to get data from a channel.
virtual void get()=0
Get data from the channel.
Requester for channelGet.
virtual void getDone(const epics::pvData::Status &status, ChannelGet::shared_pointer const &channelGet, epics::pvData::PVStructure::shared_pointer const &pvStructure, epics::pvData::BitSet::shared_pointer const &bitSet)=0
The request is done.
virtual void channelGetConnect(const epics::pvData::Status &status, ChannelGet::shared_pointer const &channelGet, epics::pvData::Structure::const_shared_pointer const &structure)=0
The client and server have both completed the createChannelGet request.
The interface through which Operations (get, put, monitor, ...) are initiated.
virtual std::string getChannelName()=0
The name passed to ChannelProvider::createChannel().
virtual std::tr1::shared_ptr< ChannelRequester > getChannelRequester()=0
The ChannelRequester passed to ChannelProvider::createChannel().
virtual void message(std::string const &message, epics::pvData::MessageType messageType)
Push notification.
virtual void printInfo(std::ostream &out)
Prints detailed information about the context to the specified output stream.
virtual ChannelArray::shared_pointer createChannelArray(ChannelArrayRequester::shared_pointer const &requester, epics::pvData::PVStructure::shared_pointer const &pvRequest)
Initiate a request for a Array (get) action.
virtual ChannelGet::shared_pointer createChannelGet(ChannelGetRequester::shared_pointer const &requester, epics::pvData::PVStructure::shared_pointer const &pvRequest)
Initiate a request for a Get action.
ConnectionState
Channel connection status.
virtual ChannelRPC::shared_pointer createChannelRPC(ChannelRPCRequester::shared_pointer const &requester, epics::pvData::PVStructure::shared_pointer const &pvRequest)
Initiate a request for a RPC action.
virtual void getField(GetFieldRequester::shared_pointer const &requester, std::string const &subField)
Initiate a request to retrieve a description of the structure of this Channel.
virtual std::string getRequesterName()
The requester must have a name.
virtual ChannelPut::shared_pointer createChannelPut(ChannelPutRequester::shared_pointer const &requester, epics::pvData::PVStructure::shared_pointer const &pvRequest)
Initiate a request for a Put action.
virtual Monitor::shared_pointer createMonitor(MonitorRequester::shared_pointer const &requester, epics::pvData::PVStructure::shared_pointer const &pvRequest)
Initiate a request for a Monitor action.
virtual bool isConnected()
Poll connection state.
virtual ChannelProcess::shared_pointer createChannelProcess(ChannelProcessRequester::shared_pointer const &requester, epics::pvData::PVStructure::shared_pointer const &pvRequest)
Initiate a request for a Process action.
virtual ChannelPutGet::shared_pointer createChannelPutGet(ChannelPutGetRequester::shared_pointer const &requester, epics::pvData::PVStructure::shared_pointer const &pvRequest)
Initiate a request for a PutGet action.
virtual void printInfo()
Prints detailed information about the context to the standard output stream.
virtual AccessRights getAccessRights(epics::pvData::PVField::shared_pointer const &pvField)
Not useful...
virtual std::string getRemoteAddress()=0
Returns the channel's remote address, signal name, etc... For example:
virtual ConnectionState getConnectionState()
Poll the connection state in more detail.
virtual std::tr1::shared_ptr< ChannelProvider > getProvider()=0
The ChannelProvider from which this Channel was requested.
ChannelProcess - request that a channel be processed.
virtual void process()=0
Issue a process request.
Requester for channelProcess.
virtual void channelProcessConnect(const epics::pvData::Status &status, ChannelProcess::shared_pointer const &channelProcess)=0
The client and server have both completed the createChannelProcess request.
virtual void processDone(const epics::pvData::Status &status, ChannelProcess::shared_pointer const &channelProcess)=0
The process request is done.
virtual std::string getFactoryName()=0
Get factory name (i.e.
virtual ChannelProvider::shared_pointer newInstance()
Create a new instance using the default Configuration.
virtual ChannelProvider::shared_pointer newInstance(const std::tr1::shared_ptr< Configuration > &)
Create a new instance using a specific Configuration.
virtual ChannelProvider::shared_pointer sharedInstance()=0
Get a shared instance using the default Configuration.
An instance of a Client or Server.
virtual Channel::shared_pointer createChannel(std::string const &name, ChannelRequester::shared_pointer const &requester, short priority, std::string const &address)=0
Request a Channel.
virtual Channel::shared_pointer createChannel(std::string const &name, ChannelRequester::shared_pointer const &requester=DefaultChannelRequester::build(), short priority=PRIORITY_DEFAULT)
See longer form.
static const short PRIORITY_OPI
OPI priority.
static const short PRIORITY_MAX
Maximal priority.
virtual ChannelFind::shared_pointer channelFind(std::string const &name, ChannelFindRequester::shared_pointer const &requester)=0
Test to see if this provider has the named channel.
virtual ChannelFind::shared_pointer channelList(ChannelListRequester::shared_pointer const &requester)
Request a list of all valid channel names for this provider.
static const short PRIORITY_LINKS_DB
DB links priority.
static const short PRIORITY_ARCHIVE
Archive priority.
static const short PRIORITY_DEFAULT
Default priority.
virtual std::string getProviderName()=0
Get the provider name.
static const short PRIORITY_MIN
Minimal priority.
ChannelProvider::shared_pointer getProvider(std::string const &providerName)
Get a shared instance of the provider with the specified name.
static ChannelProviderRegistry::shared_pointer servers()
static ChannelProviderRegistry::shared_pointer clients()
ChannelProvider::shared_pointer createProvider(std::string const &providerName, const std::tr1::shared_ptr< Configuration > &conf=std::tr1::shared_ptr< Configuration >())
Creates a new instanceof the provider with the specified name.
ChannelProviderFactory::shared_pointer add(const std::string &name, bool replace=true)
Add a new Provider which will be built using SimpleChannelProviderFactory<Provider>.
ChannelProviderFactory::shared_pointer remove(const std::string &name)
Attempt to remove a factory with the given name. Return Factory which was removed,...
virtual void clear()
Drop all factories.
ChannelProviderFactory::shared_pointer addSingleton(const ChannelProvider::shared_pointer &provider, bool replace=true)
virtual bool add(const ChannelProviderFactory::shared_pointer &fact, bool replace=true)
ChannelProviderFactory::shared_pointer addSingleton(const std::string &name, const std::tr1::shared_ptr< const Configuration > &conf=std::tr1::shared_ptr< const Configuration >(), bool replace=true)
Add a new Provider which will be built using SingletonChannelProviderFactory<Provider>.
virtual ChannelProviderFactory::shared_pointer getFactory(std::string const &providerName)
Fetch provider factor with the specified name.
static ChannelProviderRegistry::shared_pointer build()
Create a custom registry.
virtual void getProviderNames(provider_name_set &names)
Find currently registered provider names.
virtual bool remove(const ChannelProviderFactory::shared_pointer &factory)
Attempt to remove a factory. Return true if Factory was previously registered, and now removed.
Channel access put/get request.
virtual void getPut()=0
Get the put PVStructure.
virtual void getGet()=0
Get the get PVStructure.
virtual void putGet(epics::pvData::PVStructure::shared_pointer const &pvPutStructure, epics::pvData::BitSet::shared_pointer const &putBitSet)=0
Issue a put/get request.
Requester for ChannelPutGet.
virtual void getGetDone(const epics::pvData::Status &status, ChannelPutGet::shared_pointer const &channelPutGet, epics::pvData::PVStructure::shared_pointer const &pvGetStructure, epics::pvData::BitSet::shared_pointer const &getBitSet)=0
The getGet request is done.
virtual void getPutDone(const epics::pvData::Status &status, ChannelPutGet::shared_pointer const &channelPutGet, epics::pvData::PVStructure::shared_pointer const &pvPutStructure, epics::pvData::BitSet::shared_pointer const &putBitSet)=0
The getPut request is done.
virtual void putGetDone(const epics::pvData::Status &status, ChannelPutGet::shared_pointer const &channelPutGet, epics::pvData::PVStructure::shared_pointer const &pvGetStructure, epics::pvData::BitSet::shared_pointer const &getBitSet)=0
The putGet request is done.
virtual void channelPutGetConnect(const epics::pvData::Status &status, ChannelPutGet::shared_pointer const &channelPutGet, epics::pvData::Structure::const_shared_pointer const &putStructure, epics::pvData::Structure::const_shared_pointer const &getStructure)=0
The client and server have both completed the createChannelPutGet request.
Interface for a channel access put request.
virtual void put(epics::pvData::PVStructure::shared_pointer const &pvPutStructure, epics::pvData::BitSet::shared_pointer const &putBitSet)=0
Put data to a channel.
virtual void get()=0
Get the current data.
Requester for ChannelPut.
virtual void putDone(const epics::pvData::Status &status, ChannelPut::shared_pointer const &channelPut)=0
The request is done.
virtual void getDone(const epics::pvData::Status &status, ChannelPut::shared_pointer const &channelPut, epics::pvData::PVStructure::shared_pointer const &pvStructure, epics::pvData::BitSet::shared_pointer const &bitSet)=0
The get request is done.
virtual void channelPutConnect(const epics::pvData::Status &status, ChannelPut::shared_pointer const &channelPut, epics::pvData::Structure::const_shared_pointer const &structure)=0
The client and server have both processed the createChannelPut request.
Handle for an RPC operation.
virtual void request(epics::pvData::PVStructure::shared_pointer const &pvArgument)=0
Issue an RPC request to the channel.
Notifications associated with Channel::createChannelRPC().
virtual void channelRPCConnect(const epics::pvData::Status &status, ChannelRPC::shared_pointer const &operation)=0
RPC creation request satisfied.
virtual void requestDone(const epics::pvData::Status &status, ChannelRPC::shared_pointer const &operation, epics::pvData::PVStructure::shared_pointer const &pvResponse)=0
RPC request (execution) completed.
virtual void lastRequest()=0
Announce next request as last request.
virtual void cancel()=0
Cancel any pending request.
virtual std::tr1::shared_ptr< Channel > getChannel()=0
Get a channel instance this request belongs to.
Event notifications associated with Channel life-cycle.
virtual void channelStateChange(Channel::shared_pointer const &channel, Channel::ConnectionState connectionState)=0
Called occasionally after channelCreated() with Status::isOk() to give notification of connection sta...
virtual std::tr1::shared_ptr< const PeerInfo > getPeerInfo()
Return information on connected peer if applicable.
virtual void channelCreated(const epics::pvData::Status &status, Channel::shared_pointer const &channel)=0
The request made with ChannelProvider::createChannel() is satisfied.
Instance declaring destroy method.
Completion notification for Channel::getField().
virtual void getDone(const epics::pvData::Status &status, epics::pvData::FieldConstPtr const &field)=0
Check status.isOk() to determine success.
Access to Monitor subscription and queue.
Callback implemented by monitor clients.
virtual void monitorEvent(MonitorPtr const &monitor)=0
Monitor queue is not empty.
virtual void monitorConnect(epics::pvData::Status const &status, MonitorPtr const &monitor, epics::pvData::StructureConstPtr const &structure)=0
Underlying Channel is connected and operation setup is complete.
virtual void unlisten(MonitorPtr const &monitor)=0
No more subscription update will be sent.
Callback class for passing messages to a requester.
@ readWrite
Both read and write access are allowed.
@ none
Neither read or write access is allowed.
@ read
Read access is allowed but write access is not allowed.
Monitor PipelineMonitor
Pipeline (streaming) support API (optional).
FlushStrategy
The FlushStrategy enum.
std::tr1::shared_ptr< const Structure > StructureConstPtr
std::tr1::shared_ptr< const Field > FieldConstPtr
Copyright - See the COPYRIGHT that is included with this distribution.
Base for all Requesters (callbacks to client).
virtual void channelDisconnect(bool destroy)
Notification when underlying Channel becomes DISCONNECTED or DESTORYED.
Used when ChannelProvider::createChannel() is passed a NULL ChannelRequester.
virtual void channelStateChange(Channel::shared_pointer const &channel, Channel::ConnectionState connectionState)
Called occasionally after channelCreated() with Status::isOk() to give notification of connection sta...
virtual std::string getRequesterName()
The requester must have a name.
virtual void channelCreated(const epics::pvData::Status &status, Channel::shared_pointer const &channel)
The request made with ChannelProvider::createChannel() is satisfied.
Expose statistics related to network transport.
virtual void stats(Stats &s) const =0
Query current counter values.
Information provded by a client to a server-type ChannelProvider.
virtual ChannelProvider::shared_pointer newInstance(const std::tr1::shared_ptr< Configuration > &conf)
Create a new instance using a specific Configuration.
virtual ChannelProvider::shared_pointer sharedInstance()
Get a shared instance using the default Configuration.
virtual std::string getFactoryName()
Get factory name (i.e.
virtual ChannelProvider::shared_pointer sharedInstance()
Get a shared instance using the default Configuration.
virtual ChannelProvider::shared_pointer newInstance(const std::tr1::shared_ptr< Configuration > &conf)
Create a new instance using a specific Configuration.
virtual std::string getFactoryName()
Get factory name (i.e.