This is Unofficial EPICS BASE Doxygen Site
TestProvider Struct Reference

#include "utilities.h"

+ Inheritance diagram for TestProvider:
+ Collaboration diagram for TestProvider:

Public Types

typedef weak_value_map< std::string, TestPVpvs_t
 

Public Member Functions

 POINTER_DEFINITIONS (TestProvider)
 
virtual std::string getProviderName ()
 
virtual void destroy ()
 
virtual epics::pvAccess::ChannelFind::shared_pointer channelFind (std::string const &channelName, epics::pvAccess::ChannelFindRequester::shared_pointer const &channelFindRequester)
 
virtual epics::pvAccess::ChannelFind::shared_pointer channelList (epics::pvAccess::ChannelListRequester::shared_pointer const &channelListRequester)
 
virtual epics::pvAccess::Channel::shared_pointer createChannel (std::string const &channelName, epics::pvAccess::ChannelRequester::shared_pointer const &channelRequester, short priority=PRIORITY_DEFAULT)
 
virtual epics::pvAccess::Channel::shared_pointer createChannel (std::string const &channelName, epics::pvAccess::ChannelRequester::shared_pointer const &channelRequester, short priority, std::string const &address)
 
 TestProvider ()
 
virtual ~TestProvider ()
 
TestPV::shared_pointer addPV (const std::string &name, const epics::pvData::StructureConstPtr &tdef)
 
void dispatch ()
 
- Public Member Functions inherited from epics::pvAccess::ChannelProvider
 POINTER_DEFINITIONS (ChannelProvider)
 
 ChannelProvider ()
 
virtual ~ChannelProvider ()
 
virtual ChannelFind::shared_pointer channelFind (std::string const &name, ChannelFindRequester::shared_pointer const &requester)=0
 
virtual ChannelFind::shared_pointer channelList (ChannelListRequester::shared_pointer const &requester)
 
virtual Channel::shared_pointer createChannel (std::string const &name, ChannelRequester::shared_pointer const &requester=DefaultChannelRequester::build(), short priority=PRIORITY_DEFAULT)
 
virtual Channel::shared_pointer createChannel (std::string const &name, ChannelRequester::shared_pointer const &requester, short priority, std::string const &address)=0
 
- Public Member Functions inherited from epics::pvAccess::Destroyable
 POINTER_DEFINITIONS (Destroyable)
 

Static Public Member Functions

static void testCounts ()
 

Public Attributes

epicsMutex lock
 
pvs_t pvs
 

Additional Inherited Members

- Static Public Attributes inherited from epics::pvAccess::ChannelProvider
static const short PRIORITY_MIN = 0
 
static const short PRIORITY_MAX = 99
 
static const short PRIORITY_DEFAULT = PRIORITY_MIN
 
static const short PRIORITY_LINKS_DB = PRIORITY_MAX
 
static const short PRIORITY_ARCHIVE = (PRIORITY_MAX + PRIORITY_MIN) / 2
 
static const short PRIORITY_OPI = PRIORITY_MIN
 
static size_t num_instances
 
- Protected Member Functions inherited from epics::pvAccess::Destroyable
virtual ~Destroyable ()
 

Detailed Description

Definition at line 269 of file utilities.h.

Member Typedef Documentation

typedef weak_value_map<std::string, TestPV> TestProvider::pvs_t

Definition at line 293 of file utilities.h.

Constructor & Destructor Documentation

TestProvider::TestProvider ( )

Definition at line 500 of file utilities.cpp.

501 {
502  epicsAtomicIncrSizeT(&countTestProvider);
503 }
EPICS_ATOMIC_INLINE size_t epicsAtomicIncrSizeT(size_t *pTarget)
TestProvider::~TestProvider ( )
virtual

Definition at line 505 of file utilities.cpp.

506 {
507  epicsAtomicDecrSizeT(&countTestProvider);
508 }
EPICS_ATOMIC_INLINE size_t epicsAtomicDecrSizeT(size_t *pTarget)

Member Function Documentation

TestPV::shared_pointer TestProvider::addPV ( const std::string &  name,
const epics::pvData::StructureConstPtr tdef 
)

Definition at line 573 of file utilities.cpp.

574 {
575  Guard G(lock);
576  TestPV::shared_pointer ret(new TestPV(name, shared_from_this(), tdef));
577  pvs.insert(name, ret);
578  return ret;
579 }
epicsMutex lock
Definition: utilities.h:292
value_pointer insert(const K &k, value_pointer &v)
Definition: weakmap.h:230
pva::ChannelFind::shared_pointer TestProvider::channelFind ( std::string const &  channelName,
epics::pvAccess::ChannelFindRequester::shared_pointer const &  channelFindRequester 
)
virtual

Definition at line 528 of file utilities.cpp.

530 {
531  pva::ChannelFind::shared_pointer ret;
532  requester->channelFindResult(pvd::Status(pvd::Status::STATUSTYPE_FATAL, "Not implemented"),
533  ret, false);
534  return ret;
535 }
const ChannelProcessRequester::weak_pointer requester
Definition: pvAccess.cpp:68
pva::ChannelFind::shared_pointer TestProvider::channelList ( epics::pvAccess::ChannelListRequester::shared_pointer const &  channelListRequester)
virtual

Definition at line 516 of file utilities.cpp.

517 {
518  pva::ChannelFind::shared_pointer ret;
520  requester->channelListResult(pvd::Status(pvd::Status::STATUSTYPE_FATAL, "Not implemented"),
521  ret,
522  names,
523  true);
524  return ret;
525 }
const ChannelProcessRequester::weak_pointer requester
Definition: pvAccess.cpp:68
::epics::pvData::shared_vector< const T > const_svector
Definition: pvData.h:1185
virtual epics::pvAccess::Channel::shared_pointer TestProvider::createChannel ( std::string const &  channelName,
epics::pvAccess::ChannelRequester::shared_pointer const &  channelRequester,
short  priority = PRIORITY_DEFAULT 
)
virtual
virtual epics::pvAccess::Channel::shared_pointer TestProvider::createChannel ( std::string const &  channelName,
epics::pvAccess::ChannelRequester::shared_pointer const &  channelRequester,
short  priority,
std::string const &  address 
)
virtual
void TestProvider::destroy ( )
virtual

Destroy this instance.

Implements epics::pvAccess::Destroyable.

Definition at line 510 of file utilities.cpp.

511 {
512  // TODO: disconnect all?
513 }
void TestProvider::dispatch ( )

Definition at line 581 of file utilities.cpp.

582 {
583  Guard G(lock);
584  testDiag("TestProvider::dispatch");
585 
587  FOREACH(pvs_t::lock_vector_type::const_iterator, pvit, pvend, allpvs)
588  {
589  TestPV *pv = pvit->second.get();
591 
592  FOREACH(TestPV::channels_t::vector_type::const_iterator, chit, chend, channels)
593  {
594  TestPVChannel *chan = chit->get();
596 
597  if(!chan->isConnected())
598  continue;
599 
600  FOREACH(TestPVChannel::monitors_t::vector_type::const_iterator, monit, monend, monitors)
601  {
602  TestPVMonitor *mon = monit->get();
603 
604  if(mon->finalize || !mon->running)
605  continue;
606 
607  if(mon->needWakeup) {
608  testDiag(" wakeup monitor %p", mon);
609  mon->needWakeup = false;
610  pva::MonitorRequester::shared_pointer req(mon->requester.lock());
611  UnGuard U(G);
612  if(req)
613  req->monitorEvent(*monit);
614  }
615  }
616  }
617  }
618 }
monitors_t monitors
Definition: utilities.h:194
#define FOREACH(ITERTYPE, IT, END, C)
Definition: helper.h:6
const epics::pvData::MonitorRequester::weak_pointer requester
Definition: utilities.h:216
Definition: tool_lib.h:67
int testDiag(const char *fmt,...)
epicsMutex lock
Definition: utilities.h:292
channels_t channels
Definition: utilities.h:265
lock_vector_type lock_vector() const
Definition: weakmap.h:259
std::vector< std::pair< std::string, value_pointer > > lock_vector_type
Definition: weakmap.h:256
vector_type lock_vector() const
Definition: weakset.h:268
bool needWakeup
Definition: utilities.h:221
std::vector< value_pointer > vector_type
Definition: weakset.h:64
virtual bool isConnected()
Definition: pvAccess.cpp:49
virtual std::string TestProvider::getProviderName ( )
inlinevirtual

Get the provider name.

Returns
The name.

Implements epics::pvAccess::ChannelProvider.

Definition at line 273 of file utilities.h.

273 { return "TestProvider"; }
TestProvider::POINTER_DEFINITIONS ( TestProvider  )
void TestProvider::testCounts ( )
static

Definition at line 620 of file utilities.cpp.

621 {
622  int ok = 1;
623  size_t temp;
624 #define TESTC(name) temp=epicsAtomicGetSizeT(&count##name); ok &= temp==0; testDiag("num. live " #name " %u", (unsigned)temp)
628  TESTC(TestPV);
631 #undef TESTC
632  testOk(ok, "All instances free'd");
633 }
#define TESTC(name)
int testOk(int pass, const char *fmt,...)

Member Data Documentation

epicsMutex TestProvider::lock
mutable

Definition at line 292 of file utilities.h.

pvs_t TestProvider::pvs

Definition at line 294 of file utilities.h.


The documentation for this struct was generated from the following files: