5 #ifndef PV_SHAREDSTATE_H 6 #define PV_SHAREDSTATE_H 19 namespace epics{
namespace pvData{
25 namespace epics{
namespace pvAccess{
26 class ChannelProvider;
28 class ChannelRequester;
29 struct ChannelBaseRequester;
30 class GetFieldRequester;
102 virtual void onPut(
const SharedPV::shared_pointer&
pv,
Operation&
op);
104 virtual void onRPC(
const SharedPV::shared_pointer& pv,
Operation& op);
112 static shared_pointer build(
const std::tr1::shared_ptr<Handler>& handler,
Config* conf=0);
114 static shared_pointer buildReadOnly(
Config* conf=0);
116 static shared_pointer buildMailbox(
Config* conf=0);
118 explicit SharedPV(
const std::tr1::shared_ptr<Handler>& handler,
Config* conf);
123 void setHandler(
const std::tr1::shared_ptr<Handler>& handler);
124 Handler::shared_pointer getHandler()
const;
153 inline void close(
bool destroy=
false) { realClose(destroy,
true, 0); }
157 std::tr1::shared_ptr<epics::pvData::PVStructure> build();
173 virtual std::tr1::shared_ptr<epics::pvAccess::Channel> connect(
174 const std::tr1::shared_ptr<epics::pvAccess::ChannelProvider>& provider,
175 const std::string& channelName,
180 void setDebug(
int lvl);
187 static size_t num_instances;
189 weak_pointer internal_self;
195 std::tr1::shared_ptr<SharedPV::Handler> handler;
197 typedef std::list<detail::SharedPut*> puts_t;
198 typedef std::list<detail::SharedRPC*> rpcs_t;
199 typedef std::list<detail::SharedMonitorFIFO*> monitors_t;
200 typedef std::list<std::tr1::weak_ptr<epics::pvAccess::GetFieldRequester> > getfields_t;
201 typedef std::list<detail::SharedChannel*> channels_t;
203 std::tr1::shared_ptr<const epics::pvData::Structure>
type;
208 getfields_t getfields;
211 std::tr1::shared_ptr<epics::pvData::PVStructure> current;
233 std::tr1::shared_ptr<Impl> impl;
237 explicit Operation(
const std::tr1::shared_ptr<Impl> impl);
247 std::string channelName()
const;
261 void info(
const std::string&);
263 void warn(
const std::string&);
268 std::tr1::shared_ptr<epics::pvAccess::Channel> getChannel();
270 std::tr1::shared_ptr<epics::pvAccess::ChannelBaseRequester> getRequester();
274 #if __cplusplus>=201103L 275 explicit operator bool()
const {
return valid(); }
278 typedef bool (
Operation::*bool_type)()
const;
280 operator bool_type()
const {
return valid() ? &Operation::valid : 0; }
288 #endif // PV_SHAREDSTATE_H
Information provded by a client to a server-type ChannelProvider.
Interface for something which can provide Channels. aka A "PV". Typically a SharedPV.
pvd::StructureConstPtr type
TODO only here because of the Lockable.
std::tr1::shared_ptr< const Structure > StructureConstPtr
void providerRegInit(void *)
Mark external symbols and entry points for shared libraries.
virtual void onFirstConnect(const SharedPV::shared_pointer &pv)
bool dropEmptyUpdates
default true. Drop updates which don't include an field values.
#define POINTER_DEFINITIONS(clazz)
const ChannelProcessRequester::weak_pointer requester
Operation()
create empty op for later assignment
Data interface for a structure,.
void close(bool destroy=false)
ChannelPut::shared_pointer op
#define EPICS_NOT_COPYABLE(CLASS)
Disable implicit copyable.
epics::pvData::PVRequestMapper::mode_t mapperMode
default Mask.
virtual void onLastDisconnect(const SharedPV::shared_pointer &pv)
Called when the last client disconnects. May close()