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() {}
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) {}
163 std::string transportPeer;
164 Counter transportBytes;
165 Counter operationBytes;
168 inline Stats() :populated(
false) {}
173 virtual void stats(Stats& s)
const =0;
181 static size_t num_instances;
212 static size_t num_instances;
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;
315 virtual void getArray(
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(
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(
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;
895 static size_t num_instances;
901 virtual void message(std::string
const & message, epics::pvData::MessageType messageType);
907 NEVER_CONNECTED, CONNECTED, DISCONNECTED, DESTROYED
910 static const char* ConnectionStateNames[];
961 virtual void getField(GetFieldRequester::shared_pointer
const & requester,std::string
const & subField);
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);
1149 static size_t num_instances;
1213 virtual
void channelCreated(const
epics::pvData::Status& status,
Channel::shared_pointer const & channel) OVERRIDE FINAL;
1214 virtual
void channelStateChange(
Channel::shared_pointer const & channel,
Channel::ConnectionState connectionState) OVERRIDE FINAL;
1222 IMMEDIATE, DELAYED, USER_CONTROLED
1237 static const short PRIORITY_MIN = 0;
1239 static const short PRIORITY_MAX = 99;
1241 static const short PRIORITY_DEFAULT = PRIORITY_MIN;
1243 static const short PRIORITY_LINKS_DB = PRIORITY_MAX;
1245 static const short PRIORITY_ARCHIVE = (PRIORITY_MAX + PRIORITY_MIN) / 2;
1247 static const short PRIORITY_OPI = PRIORITY_MIN;
1249 static size_t num_instances;
1270 virtual ChannelFind::shared_pointer
channelFind(std::string
const & name,
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(),
1289 short priority = PRIORITY_DEFAULT);
1314 virtual Channel::shared_pointer
createChannel(std::string
const & name,ChannelRequester::shared_pointer
const & requester,
1315 short priority, std::string
const & address) = 0;
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>
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));
1387 const std::string pname;
1388 epics::pvData::Mutex sharedM;
1389 ChannelProvider::weak_pointer shared;
1396template<
class Prov
ider>
1400 const std::tr1::shared_ptr<const Configuration>& conf = std::tr1::shared_ptr<const Configuration>())
1401 :pname(name), config(conf)
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
1421 return sharedInstance();
1424 const std::string pname;
1425 epics::pvData::Mutex sharedM;
1426 ChannelProvider::weak_pointer shared;
1427 const std::tr1::shared_ptr<const Configuration> config;
1443 static ChannelProviderRegistry::shared_pointer
build();
1448 static ChannelProviderRegistry::shared_pointer
clients();
1453 static ChannelProviderRegistry::shared_pointer
servers();
1460 ChannelProvider::shared_pointer
getProvider(std::string
const & providerName);
1468 const std::tr1::shared_ptr<Configuration>& conf = std::tr1::shared_ptr<Configuration>());
1475 virtual ChannelProviderFactory::shared_pointer
getFactory(std::string
const & providerName);
1485 virtual bool add(
const ChannelProviderFactory::shared_pointer& fact,
bool replace=
true);
1488 template<
class Prov
ider>
1489 ChannelProviderFactory::shared_pointer
add(
const std::string& name,
bool replace=
true)
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>
1502 ChannelProviderFactory::shared_pointer
addSingleton(
const std::string& name,
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,
1519 ChannelProviderFactory::shared_pointer
remove(
const std::string& name);
1522 virtual bool remove(
const ChannelProviderFactory::shared_pointer& factory);
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 &)
valarray< size_t > stride() const
constexpr void replace(_ForwardIterator __first, _ForwardIterator __last, const _Tp &__old_value, const _Tp &__new_value)
void lock(_L1 &__l1, _L2 &__l2, _L3 &... __l3)
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 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.
ChanneProvider factory interface.
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.
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.
virtual std::string getProviderName()=0
Get the provider name.
Interface for locating channel providers.
ChannelProvider::shared_pointer getProvider(std::string const &providerName)
Get a shared instance of the provider with the specified name.
static ChannelProviderRegistry::shared_pointer servers()
The global registry for "servers".
static ChannelProviderRegistry::shared_pointer clients()
The global registry for "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)
Add a pre-created Provider instance.
virtual bool add(const ChannelProviderFactory::shared_pointer &fact, bool replace=true)
Add new factory.
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.
Base interface for all channel requests (aka.
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.
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 std::string getRequesterName()
The requester must have a name.
Expose statistics related to network transport.
virtual void stats(Stats &s) const =0
Query current counter values.
Simple ChannelProviderFactory which requires the existance of a ctor Provider(const std::tr1::shared_...
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.
Helper for ChannelProviders which access a singleton resource (eg.
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.