This is Unofficial EPICS BASE Doxygen Site
Server API

Classes

class  pvas::StaticProvider
 A Provider based on a list of SharedPV instance. More...
 
class  pvas::DynamicProvider
 A Provider which has no pre-configured list of names. More...
 
struct  pvas::SharedPV::Config
 
struct  pvas::SharedPV::Handler
 
class  pvas::SharedPV
 
struct  pvas::Operation
 

Functions

 pvas::SharedPV::POINTER_DEFINITIONS (SharedPV)
 
 pvas::SharedPV::Config::Config ()
 
 pvas::SharedPV::Handler::POINTER_DEFINITIONS (Handler)
 
virtual pvas::SharedPV::Handler::~Handler ()
 
virtual void pvas::SharedPV::Handler::onFirstConnect (const SharedPV::shared_pointer &pv)
 
virtual void pvas::SharedPV::Handler::onLastDisconnect (const SharedPV::shared_pointer &pv)
 Called when the last client disconnects. May close() More...
 
virtual void pvas::SharedPV::Handler::onPut (const SharedPV::shared_pointer &pv, Operation &op)
 Client requests Put. More...
 
virtual void pvas::SharedPV::Handler::onRPC (const SharedPV::shared_pointer &pv, Operation &op)
 Client requests RPC. More...
 
static shared_pointer pvas::SharedPV::build (const std::tr1::shared_ptr< Handler > &handler, Config *conf=0)
 
static shared_pointer pvas::SharedPV::buildReadOnly (Config *conf=0)
 A SharedPV which fails all Put and RPC operations. In closed state. More...
 
static shared_pointer pvas::SharedPV::buildMailbox (Config *conf=0)
 A SharedPV which accepts all Put operations, and fails all RPC operations. In closed state. More...
 
virtual pvas::SharedPV::~SharedPV ()
 
void pvas::SharedPV::setHandler (const std::tr1::shared_ptr< Handler > &handler)
 Replace Handler given with ctor. More...
 
Handler::shared_pointer pvas::SharedPV::getHandler () const
 
bool pvas::SharedPV::isOpen () const
 test open-ness. cf. open() and close() More...
 
void pvas::SharedPV::open (const epics::pvData::PVStructure &value)
 Shorthand for. More...
 
void pvas::SharedPV::open (const epics::pvData::PVStructure &value, const epics::pvData::BitSet &valid)
 
void pvas::SharedPV::open (const epics::pvData::StructureConstPtr &type)
 Shorthand for. More...
 
void pvas::SharedPV::close (bool destroy=false)
 
std::tr1::shared_ptr< epics::pvData::PVStructurepvas::SharedPV::build ()
 
void pvas::SharedPV::post (const epics::pvData::PVStructure &value, const epics::pvData::BitSet &changed)
 
void pvas::SharedPV::fetch (epics::pvData::PVStructure &value, epics::pvData::BitSet &valid)
 Update arguments with current value, which is the initial value from open() with accumulated post() calls. More...
 
virtual std::tr1::shared_ptr< epics::pvAccess::Channelpvas::SharedPV::connect (const std::tr1::shared_ptr< epics::pvAccess::ChannelProvider > &provider, const std::string &channelName, const std::tr1::shared_ptr< epics::pvAccess::ChannelRequester > &requester) OVERRIDE FINAL
 
virtual void pvas::SharedPV::disconnect (bool destroy, const epics::pvAccess::ChannelProvider *provider) OVERRIDE FINAL
 
void pvas::SharedPV::setDebug (int lvl)
 
int pvas::SharedPV::isDebug () const
 
 pvas::Operation::POINTER_DEFINITIONS (Operation)
 
 pvas::Operation::Operation ()
 create empty op for later assignment More...
 
const epics::pvData::PVStructurepvas::Operation::pvRequest () const
 pvRequest blob, may be used to modify handling. More...
 
const epics::pvData::PVStructurepvas::Operation::value () const
 
const epics::pvData::BitSetpvas::Operation::changed () const
 Applies to value(). Which fields of input data are actual valid. Others should not be used. More...
 
std::string pvas::Operation::channelName () const
 The name of the channel through which this request was made (eg. for logging purposes). More...
 
const epics::pvAccess::PeerInfopvas::Operation::peer () const
 
void pvas::Operation::complete ()
 
void pvas::Operation::complete (const epics::pvData::Status &sts)
 Complete with success or error w/o data. More...
 
void pvas::Operation::complete (const epics::pvData::PVStructure &value, const epics::pvData::BitSet &changed)
 Sucessful completion with data (RPC only) More...
 
void pvas::Operation::info (const std::string &)
 Send info message to client. Does not complete(). More...
 
void pvas::Operation::warn (const std::string &)
 Send warning message to client. Does not complete(). More...
 
int pvas::Operation::isDebug () const
 
std::tr1::shared_ptr< epics::pvAccess::Channelpvas::Operation::getChannel ()
 
std::tr1::shared_ptr< epics::pvAccess::ChannelBaseRequesterpvas::Operation::getRequester ()
 
bool pvas::Operation::valid () const
 
 pvas::Operation::operator bool_type () const
 

Variables

bool pvas::SharedPV::Config::dropEmptyUpdates
 default true. Drop updates which don't include an field values. More...
 
epics::pvData::PVRequestMapper::mode_t pvas::SharedPV::Config::mapperMode
 default Mask. More...
 

Friends

struct pvas::SharedPV::detail::SharedChannel
 
struct pvas::SharedPV::detail::SharedMonitorFIFO
 
struct pvas::SharedPV::detail::SharedPut
 
struct pvas::SharedPV::detail::SharedRPC
 
struct pvas::Operation::detail::SharedPut
 
struct pvas::Operation::detail::SharedRPC
 
void pvas::SharedPV::epics::pvAccess::providerRegInit (void *)
 

Detailed Description

PVA Server Providers, for use with a PVA epics::pvAccess::ServerContext

These are implementations of epics::pvAccess::ChannelProvider which manage "PVs", which are sources of epics::pvAccess::Channel instances. Typically SharedPV .

Two containers are provided StaticProvider, and for some special cases DynamicProvider. It is recommended to use StaticProvider where possible, with DynamicProvider for exception cases.

A StaticProvider maintains an internal lookup table of StaticProvider::ChannelBuilder (aka. SharedPV). This table is manipulated by StaticProvider::add() and StaticProvider::remove(), which can be called at any time.

A DynamicProvider does not maintain an internal lookup table. Instead it provides the DynamicProvider::Handler interface, through which remote search and connection requests are delivered.

See examples_mailbox for a working example.

namespace pva = epics::pvAccess;
pvas::SharedPV::shared_pointer pv(pvas::SharedPV::buildMailbox());
pvas::StaticProvider sprov("arbitrary");
pva::ServerContext::shared_pointer server(
pva::ServerContext::Config() .provider(sprov.provider()) ));
sprov->add("pv:name", pv);

Server API shared_ptr Ownership

shared_ptr<> relationships internal to server API classes. Solid red lines are shared_ptr<>. Dashed red lines are shared_ptr<> which may exist safely in user code. Rectangles are public API classes. Circles are internal classes. "ChannelProvider" is an arbitrary ChannelProvider, possibly StaticProvider or DynamicProvider.

dot_inline_dotgraph_2.png
Internal shared_ptr<> relationships.

Function Documentation

SharedPV::shared_pointer pvas::SharedPV::build ( const std::tr1::shared_ptr< Handler > &  handler,
Config conf = 0 
)
static

Allocate a new PV in the closed state.

Parameters
handlerOur callbacks. May be NULL. Stored internally as a shared_ptr<>
confOptional. Extra configuration. If !NULL, will be modified to reflect configuration actually used.
Postcondition
In the closed state

Definition at line 62 of file sharedstate_pv.cpp.

63 {
64  assert(!!handler);
65  SharedPV::shared_pointer ret(new SharedPV(handler, conf));
66  ret->internal_self = ret;
67  return ret;
68 }
#define assert(exp)
Declare that a condition should be true.
Definition: epicsAssert.h:70
pvd::PVStructure::shared_pointer pvas::SharedPV::build ( )

Create a new container which may be used to prepare to call post(). This container will be owned exclusively by the caller.

Definition at line 318 of file sharedstate_pv.cpp.

319 {
320  Guard G(mutex);
321  if(!type)
322  throw std::logic_error("Can't build() before open()");
323  return pvd::getPVDataCreate()->createPVStructure(type);
324 }
pvd::StructureConstPtr type
FORCE_INLINE const PVDataCreatePtr & getPVDataCreate()
Definition: pvData.h:1648
SharedPV::shared_pointer pvas::SharedPV::buildMailbox ( Config conf = 0)
static

A SharedPV which accepts all Put operations, and fails all RPC operations. In closed state.

Definition at line 77 of file sharedstate_pv.cpp.

78 {
79  std::tr1::shared_ptr<Handler> handler(new MailboxHandler);
80  SharedPV::shared_pointer ret(new SharedPV(handler, conf));
81  ret->internal_self = ret;
82  return ret;
83 }
SharedPV::shared_pointer pvas::SharedPV::buildReadOnly ( Config conf = 0)
static

A SharedPV which fails all Put and RPC operations. In closed state.

Definition at line 70 of file sharedstate_pv.cpp.

71 {
72  SharedPV::shared_pointer ret(new SharedPV(std::tr1::shared_ptr<Handler>(), conf));
73  ret->internal_self = ret;
74  return ret;
75 }
const epics::pvData::BitSet & pvas::Operation::changed ( ) const

Applies to value(). Which fields of input data are actual valid. Others should not be used.

Definition at line 288 of file sharedstate_channel.cpp.

289 {
290  return impl->changed;
291 }
std::string pvas::Operation::channelName ( ) const

The name of the channel through which this request was made (eg. for logging purposes).

Definition at line 293 of file sharedstate_channel.cpp.

294 {
295  std::string ret;
296  std::tr1::shared_ptr<epics::pvAccess::Channel> chan(impl->getChannel());
297  if(chan) {
298  ret = chan->getChannelName();
299  }
300  return ret;
301 }
void pvas::SharedPV::close ( bool  destroy = false)
inline

Force any clients to disconnect, and prevent re-connection

Parameters
destroyIndicate whether this close() is permanent for clients. If destroy=false, the internal client list is retained, and these clients will see a subsequent open(). If destory=true, the internal client list is cleared.
Postcondition
In the closed state
Note
Provider locking rules apply (
See also
provider_roles_requester_locking).

close() is not final, even with destroy=true new clients may begin connecting, and open() may be called again. A final close() should be performed after the removal from StaticProvider/DynamicProvider which will prevent new clients.

Definition at line 153 of file sharedstate.h.

153 { realClose(destroy, true, 0); }
void pvas::Operation::complete ( )

shorthand for successful completion w/o data (Put or RPC with void return)

Definition at line 308 of file sharedstate_channel.cpp.

309 {
310  impl->complete(pvd::Status(), 0);
311 }
void pvas::Operation::complete ( const epics::pvData::Status sts)

Complete with success or error w/o data.

Definition at line 313 of file sharedstate_channel.cpp.

314 {
315  impl->complete(sts, 0);
316 }
void pvas::Operation::complete ( const epics::pvData::PVStructure value,
const epics::pvData::BitSet changed 
)

Sucessful completion with data (RPC only)

Definition at line 318 of file sharedstate_channel.cpp.

320 {
321  impl->complete(pvd::Status(), &value);
322 }
pvas::SharedPV::Config::Config ( )

Definition at line 55 of file sharedstate_pv.cpp.

56  :dropEmptyUpdates(true)
58 {}
bool dropEmptyUpdates
default true. Drop updates which don&#39;t include an field values.
Definition: sharedstate.h:86
epics::pvData::PVRequestMapper::mode_t mapperMode
default Mask.
Definition: sharedstate.h:87
std::tr1::shared_ptr< pva::Channel > pvas::SharedPV::connect ( const std::tr1::shared_ptr< epics::pvAccess::ChannelProvider > &  provider,
const std::string &  channelName,
const std::tr1::shared_ptr< epics::pvAccess::ChannelRequester > &  requester 
)
virtual

may call Handler::onFirstConnect()

Note
Provider locking rules apply (
See also
provider_roles_requester_locking).

Implements pvas::StaticProvider::ChannelBuilder.

Definition at line 370 of file sharedstate_pv.cpp.

373 {
374  shared_pointer self(internal_self);
375  std::tr1::shared_ptr<detail::SharedChannel> ret(new detail::SharedChannel(self, provider, channelName, requester));
376  return ret;
377 }
const ChannelProcessRequester::weak_pointer requester
Definition: pvAccess.cpp:68
void pvas::SharedPV::disconnect ( bool  destroy,
const epics::pvAccess::ChannelProvider provider 
)
virtual

Disconnect all Channels created through the given ChannelProvider. destroy==true if the ChannelProvider is shutting down.

Implements pvas::StaticProvider::ChannelBuilder.

Definition at line 380 of file sharedstate_pv.cpp.

381 {
382  realClose(destroy, false, provider);
383 }
void pvas::SharedPV::fetch ( epics::pvData::PVStructure value,
epics::pvData::BitSet valid 
)

Update arguments with current value, which is the initial value from open() with accumulated post() calls.

Definition at line 356 of file sharedstate_pv.cpp.

357 {
358  Guard I(mutex);
359  if(!type)
360  throw std::logic_error("Not open()");
361  else if(value.getStructure()!=type)
362  throw std::logic_error("Types do not match");
363 
364  value.copy(*current);
365  valid = this->valid;
366 }
pvd::StructureConstPtr type
void copy(const PVStructure &from)
const StructureConstPtr & getStructure() const
Definition: pvData.h:731
std::tr1::shared_ptr< epics::pvAccess::Channel > pvas::Operation::getChannel ( )

Definition at line 344 of file sharedstate_channel.cpp.

345 {
346  return impl->getChannel();
347 }
SharedPV::Handler::shared_pointer pvas::SharedPV::getHandler ( ) const

Definition at line 105 of file sharedstate_pv.cpp.

106 {
107  Guard G(mutex);
108  return handler;
109 }
std::tr1::shared_ptr< pva::ChannelBaseRequester > pvas::Operation::getRequester ( )

Definition at line 349 of file sharedstate_channel.cpp.

350 {
351  return impl->getRequester();
352 }
void pvas::Operation::info ( const std::string &  msg)

Send info message to client. Does not complete().

Definition at line 324 of file sharedstate_channel.cpp.

325 {
326  pva::ChannelBaseRequester::shared_pointer req(impl->getRequester());
327  if(req)
328  req->message(msg, pvd::infoMessage);
329 }
int pvas::SharedPV::isDebug ( ) const

Definition at line 391 of file sharedstate_pv.cpp.

392 {
393  Guard G(mutex);
394  return debugLvl;
395 }
int pvas::Operation::isDebug ( ) const

Definition at line 338 of file sharedstate_channel.cpp.

339 {
340  Guard G(impl->mutex);
341  return impl->debugLvl;
342 }
bool pvas::SharedPV::isOpen ( ) const

test open-ness. cf. open() and close()

Definition at line 112 of file sharedstate_pv.cpp.

113 {
114  Guard G(mutex);
115  return !!type;
116 }
pvd::StructureConstPtr type
virtual void pvas::SharedPV::Handler::onFirstConnect ( const SharedPV::shared_pointer &  pv)
inlinevirtual

Definition at line 98 of file sharedstate.h.

98 {}
virtual void pvas::SharedPV::Handler::onLastDisconnect ( const SharedPV::shared_pointer &  pv)
inlinevirtual

Called when the last client disconnects. May close()

Definition at line 100 of file sharedstate.h.

100 {}
void pvas::SharedPV::Handler::onPut ( const SharedPV::shared_pointer &  pv,
Operation op 
)
virtual

Client requests Put.

Definition at line 45 of file sharedstate_pv.cpp.

46 {
47  op.complete(pvd::Status::error("Put not supported"));
48 }
static Status error(const std::string &m)
Definition: status.h:50
ChannelPut::shared_pointer op
Definition: pvAccess.cpp:132
void pvas::SharedPV::Handler::onRPC ( const SharedPV::shared_pointer &  pv,
Operation op 
)
virtual

Client requests RPC.

Definition at line 50 of file sharedstate_pv.cpp.

51 {
52  op.complete(pvd::Status::error("RPC not supported"));
53 }
static Status error(const std::string &m)
Definition: status.h:50
ChannelPut::shared_pointer op
Definition: pvAccess.cpp:132
void pvas::SharedPV::open ( const epics::pvData::PVStructure value)

Shorthand for.

open(value, pvd::BitSet().set(0))

Definition at line 222 of file sharedstate_pv.cpp.

223 {
224  // consider all fields to have non-default values. For users how don't keep track of this.
225  open(value, pvd::BitSet().set(0));
226 }
A vector of bits.
Definition: bitSet.h:56
void open(const epics::pvData::PVStructure &value)
Shorthand for.
void pvas::SharedPV::open ( const epics::pvData::PVStructure value,
const epics::pvData::BitSet valid 
)

Begin allowing clients to connect.

Parameters
valueThe initial value of this PV. (any pending Get/Monitor operation will complete with this)
validOnly these marked fields are considered to have non-default values.
Exceptions
std::logic_errorif not in the closed state.
Postcondition
In the opened state
Note
Provider locking rules apply (
See also
provider_roles_requester_locking).

Definition at line 135 of file sharedstate_pv.cpp.

136 {
137  typedef std::vector<PutInfo> xputs_t;
138  typedef std::vector<std::tr1::shared_ptr<detail::SharedRPC> > xrpcs_t;
139  typedef std::vector<std::tr1::shared_ptr<pva::MonitorFIFO> > xmonitors_t;
140  typedef std::vector<std::tr1::shared_ptr<pva::GetFieldRequester> > xgetfields_t;
141 
142  const pvd::StructureConstPtr newtype(value.getStructure());
143  pvd::PVStructurePtr newvalue(pvd::getPVDataCreate()->createPVStructure(newtype));
144  newvalue->copyUnchecked(value, valid);
145 
146  xputs_t p_put;
147  xrpcs_t p_rpc;
148  xmonitors_t p_monitor;
149  xgetfields_t p_getfield;
150  {
151  Guard I(mutex);
152 
153  if(type)
154  throw std::logic_error("Already open()");
155 
156  p_put.reserve(puts.size());
157  p_rpc.reserve(rpcs.size());
158  p_monitor.reserve(monitors.size());
159  p_getfield.reserve(getfields.size());
160 
161  type = newtype;
162  current = newvalue;
163  this->valid = valid;
164 
165  FOR_EACH(puts_t::const_iterator, it, end, puts) {
166  if((*it)->channel->dead) continue;
167  try {
168  try {
169  (*it)->mapper.compute(*current, *(*it)->pvRequest, config.mapperMode);
170  p_put.push_back(PutInfo((*it)->shared_from_this(), (*it)->mapper.requested(), (*it)->mapper.warnings()));
171  }catch(std::runtime_error& e) {
172  // compute() error
173  p_put.push_back(PutInfo((*it)->shared_from_this(), pvd::StructureConstPtr(), pvd::Status::error(e.what())));
174  }
175  }catch(std::tr1::bad_weak_ptr&) {
176  //racing destruction
177  }
178  }
179  FOR_EACH(rpcs_t::const_iterator, it, end, rpcs) {
180  if((*it)->connected || (*it)->channel->dead) continue;
181  try {
182  p_rpc.push_back((*it)->shared_from_this());
183  }catch(std::tr1::bad_weak_ptr&) {}
184  }
185  FOR_EACH(monitors_t::const_iterator, it, end, monitors) {
186  if((*it)->channel->dead) continue;
187  try {
188  (*it)->open(newtype);
189  // post initial update
190  (*it)->post(*current, valid);
191  p_monitor.push_back((*it)->shared_from_this());
192  }catch(std::tr1::bad_weak_ptr&) {}
193  }
194  // consume getField
195  FOR_EACH(getfields_t::iterator, it, end, getfields) {
196  // TODO: this may be on a dead Channel
197  p_getfield.push_back(it->lock());
198  }
199  getfields.clear(); // consume
200  }
201  // unlock for callbacks
202  FOR_EACH(xputs_t::iterator, it, end, p_put) {
203  detail::SharedPut::requester_type::shared_pointer requester(it->put->requester.lock());
204  if(requester) {
205  if(it->status.getType()==pvd::Status::STATUSTYPE_WARNING)
206  requester->message(it->status.getMessage(), pvd::warningMessage);
207  requester->channelPutConnect(it->status, it->put, it->type);
208  }
209  }
210  FOR_EACH(xrpcs_t::iterator, it, end, p_rpc) {
211  detail::SharedRPC::requester_type::shared_pointer requester((*it)->requester.lock());
212  if(requester) requester->channelRPCConnect(pvd::Status(), *it);
213  }
214  FOR_EACH(xmonitors_t::iterator, it, end, p_monitor) {
215  (*it)->notify();
216  }
217  FOR_EACH(xgetfields_t::iterator, it, end, p_getfield) {
218  if(*it) (*it)->getDone(pvd::Status(), newtype);
219  }
220 }
static Status error(const std::string &m)
Definition: status.h:50
pvd::StructureConstPtr type
std::tr1::shared_ptr< const Structure > StructureConstPtr
Definition: pvIntrospect.h:162
#define FOR_EACH(TYPE, IT, END, OBJ)
#define puts
Definition: epicsStdio.h:46
const ChannelProcessRequester::weak_pointer requester
Definition: pvAccess.cpp:68
std::tr1::shared_ptr< PVStructure > PVStructurePtr
Definition: pvData.h:87
const StructureConstPtr & getStructure() const
Definition: pvData.h:731
FORCE_INLINE const PVDataCreatePtr & getPVDataCreate()
Definition: pvData.h:1648
epics::pvData::PVRequestMapper::mode_t mapperMode
default Mask.
Definition: sharedstate.h:87
void pvas::SharedPV::open ( const epics::pvData::StructureConstPtr type)

Shorthand for.

open(*pvd::getPVDataCreate()->createPVStructure(type), pvd::BitSet().set(0))

Definition at line 228 of file sharedstate_pv.cpp.

229 {
230  pvd::PVStructurePtr value(pvd::getPVDataCreate()->createPVStructure(type));
231  open(*value);
232 }
Definition: link.h:174
pvd::StructureConstPtr type
void open(const epics::pvData::PVStructure &value)
Shorthand for.
std::tr1::shared_ptr< PVStructure > PVStructurePtr
Definition: pvData.h:87
FORCE_INLINE const PVDataCreatePtr & getPVDataCreate()
Definition: pvData.h:1648
pvas::Operation::Operation ( )
inline

create empty op for later assignment

Definition at line 239 of file sharedstate.h.

pvas::Operation::operator bool_type ( ) const
inline

Definition at line 280 of file sharedstate.h.

280 { return valid() ? &Operation::valid : 0; }
const pva::PeerInfo * pvas::Operation::peer ( ) const

Information about peer transport and authentication.

Returns
May be NULL if no information is available

Definition at line 303 of file sharedstate_channel.cpp.

304 {
305  return impl->info ? impl->info.get() : 0;
306 }
pvas::SharedPV::POINTER_DEFINITIONS ( SharedPV  )
pvas::SharedPV::Handler::POINTER_DEFINITIONS ( Handler  )
pvas::Operation::POINTER_DEFINITIONS ( Operation  )
void pvas::SharedPV::post ( const epics::pvData::PVStructure value,
const epics::pvData::BitSet changed 
)

Update the cached PVStructure in this SharedPV. Only those fields marked as changed will be copied in. Makes a light-weight copy.

Precondition
isOpen()==true
Exceptions
std::logic_errorif !isOpen()
Note
Provider locking rules apply (
See also
provider_roles_requester_locking).

Definition at line 326 of file sharedstate_pv.cpp.

328 {
329  typedef std::vector<std::tr1::shared_ptr<pva::MonitorFIFO> > xmonitors_t;
330  xmonitors_t p_monitor;
331  {
332  Guard I(mutex);
333 
334  if(!type)
335  throw std::logic_error("Not open()");
336  else if(*type!=*value.getStructure())
337  throw std::logic_error("Type mis-match");
338 
339  if(current) {
340  current->copyUnchecked(value, changed);
341  valid |= changed;
342  }
343 
344  p_monitor.reserve(monitors.size()); // ick, for lack of a list with thread-safe iteration
345 
346  FOR_EACH(monitors_t::const_iterator, it, end, monitors) {
347  (*it)->post(value, changed);
348  p_monitor.push_back((*it)->shared_from_this());
349  }
350  }
351  FOR_EACH(xmonitors_t::iterator, it, end, p_monitor) {
352  (*it)->notify();
353  }
354 }
pvd::StructureConstPtr type
#define FOR_EACH(TYPE, IT, END, OBJ)
const StructureConstPtr & getStructure() const
Definition: pvData.h:731
const epics::pvData::PVStructure & pvas::Operation::pvRequest ( ) const

pvRequest blob, may be used to modify handling.

Definition at line 278 of file sharedstate_channel.cpp.

279 {
280  return *impl->pvRequest;
281 }
void pvas::SharedPV::setDebug ( int  lvl)

Definition at line 385 of file sharedstate_pv.cpp.

386 {
387  Guard G(mutex);
388  debugLvl = lvl;
389 }
void pvas::SharedPV::setHandler ( const std::tr1::shared_ptr< Handler > &  handler)

Replace Handler given with ctor.

Definition at line 99 of file sharedstate_pv.cpp.

100 {
101  Guard G(mutex);
102  this->handler = handler;
103 }
bool pvas::Operation::valid ( void  ) const

Definition at line 354 of file sharedstate_channel.cpp.

355 {
356  return !!impl;
357 }
const epics::pvData::PVStructure & pvas::Operation::value ( ) const

Input data

Definition at line 283 of file sharedstate_channel.cpp.

284 {
285  return *impl->value;
286 }
void pvas::Operation::warn ( const std::string &  msg)

Send warning message to client. Does not complete().

Definition at line 331 of file sharedstate_channel.cpp.

332 {
333  pva::ChannelBaseRequester::shared_pointer req(impl->getRequester());
334  if(req)
335  req->message(msg, pvd::warningMessage);
336 }
pvas::SharedPV::Handler::~Handler ( )
virtual

Definition at line 43 of file sharedstate_pv.cpp.

43 {}
pvas::SharedPV::~SharedPV ( )
virtual

Definition at line 94 of file sharedstate_pv.cpp.

94  {
95  close();
96  REFTRACE_DECREMENT(num_instances);
97 }
void close(bool destroy=false)
Definition: sharedstate.h:153

Variable Documentation

bool pvas::SharedPV::Config::dropEmptyUpdates

default true. Drop updates which don't include an field values.

Definition at line 86 of file sharedstate.h.

epics::pvData::PVRequestMapper::mode_t pvas::SharedPV::Config::mapperMode

default Mask.

See also
epics::pvData::PVRequestMapper::mode_t

Definition at line 87 of file sharedstate.h.

Friends

friend struct detail::SharedChannel
friend

Definition at line 79 of file sharedstate.h.

friend struct detail::SharedMonitorFIFO
friend

Definition at line 80 of file sharedstate.h.

friend struct detail::SharedPut
friend

Definition at line 81 of file sharedstate.h.

friend struct detail::SharedPut
friend

Definition at line 235 of file sharedstate.h.

friend struct detail::SharedRPC
friend

Definition at line 82 of file sharedstate.h.

friend struct detail::SharedRPC
friend

Definition at line 236 of file sharedstate.h.

void epics::pvAccess::providerRegInit ( void *  )
friend