This is Unofficial EPICS BASE Doxygen Site
ChannelCacheEntry::CRequester Struct Reference

#include "chancache.h"

+ Inheritance diagram for ChannelCacheEntry::CRequester:
+ Collaboration diagram for ChannelCacheEntry::CRequester:

Public Member Functions

 CRequester (const ChannelCacheEntry::shared_pointer &p)
 
virtual ~CRequester ()
 
virtual std::string getRequesterName ()
 
virtual void channelCreated (const epics::pvData::Status &status, epics::pvAccess::Channel::shared_pointer const &channel)
 
virtual void channelStateChange (epics::pvAccess::Channel::shared_pointer const &channel, epics::pvAccess::Channel::ConnectionState connectionState)
 
- Public Member Functions inherited from epics::pvAccess::ChannelRequester
 POINTER_DEFINITIONS (ChannelRequester)
 
 ChannelRequester ()
 
virtual ~ChannelRequester ()
 
virtual void channelCreated (const epics::pvData::Status &status, Channel::shared_pointer const &channel)=0
 
virtual void channelStateChange (Channel::shared_pointer const &channel, Channel::ConnectionState connectionState)=0
 
virtual std::tr1::shared_ptr< const PeerInfogetPeerInfo ()
 Return information on connected peer if applicable. More...
 
- Public Member Functions inherited from epics::pvAccess::Requester
 POINTER_DEFINITIONS (Requester)
 
virtual ~Requester ()
 
virtual void message (std::string const &message, MessageType messageType=errorMessage)
 

Public Attributes

ChannelCacheEntry::weak_pointer chan
 

Static Public Attributes

static size_t num_instances
 
- Static Public Attributes inherited from epics::pvAccess::ChannelRequester
static size_t num_instances
 

Additional Inherited Members

- Public Types inherited from epics::pvAccess::ChannelRequester
typedef Channel operation_type
 

Detailed Description

Definition at line 134 of file chancache.h.

Constructor & Destructor Documentation

ChannelCacheEntry::CRequester::CRequester ( const ChannelCacheEntry::shared_pointer &  p)

Definition at line 46 of file chancache.cpp.

47  :chan(p)
48 {
50 }
ChannelCacheEntry::weak_pointer chan
Definition: chancache.h:140
EPICS_ATOMIC_INLINE size_t epicsAtomicIncrSizeT(size_t *pTarget)
ChannelCacheEntry::CRequester::~CRequester ( )
virtual

Definition at line 52 of file chancache.cpp.

53 {
55 }
EPICS_ATOMIC_INLINE size_t epicsAtomicDecrSizeT(size_t *pTarget)

Member Function Documentation

void ChannelCacheEntry::CRequester::channelCreated ( const epics::pvData::Status status,
epics::pvAccess::Channel::shared_pointer const &  channel 
)
virtual

Definition at line 59 of file chancache.cpp.

61 {}
void ChannelCacheEntry::CRequester::channelStateChange ( epics::pvAccess::Channel::shared_pointer const &  channel,
epics::pvAccess::Channel::ConnectionState  connectionState 
)
virtual

Definition at line 64 of file chancache.cpp.

66 {
67  ChannelCacheEntry::shared_pointer chan(this->chan.lock());
68  if(!chan)
69  return;
70 
71  {
72  Guard G(chan->cache->cacheLock);
73 
74  assert(chan->channel.get()==channel.get());
75 
76  switch(connectionState)
77  {
80  // Drop from cache
81  chan->cache->entries.erase(chan->channelName);
82  // keep 'chan' as a reference so that actual destruction doesn't happen which cacheLock is held
83  break;
84  default:
85  break;
86  }
87  }
88 
89  // fanout notification
90  ChannelCacheEntry::interested_t::vector_type interested(chan->interested.lock_vector()); // Copy
91 
92  FOREACH(ChannelCacheEntry::interested_t::vector_type::const_iterator, it, end, interested)
93  {
94  GWChannel *chan = it->get();
95  pva::ChannelRequester::shared_pointer req(chan->requester.lock());
96  if(req)
97  req->channelStateChange(*it, connectionState);
98  }
99 }
#define assert(exp)
Declare that a condition should be true.
Definition: epicsAssert.h:70
epics::pvAccess::Channel::shared_pointer channel
Definition: chancache.h:117
#define FOREACH(ITERTYPE, IT, END, C)
Definition: helper.h:6
interested_t interested
Definition: chancache.h:123
ChannelCacheEntry::weak_pointer chan
Definition: chancache.h:140
const requester_type::weak_pointer requester
Definition: channel.h:17
std::vector< value_pointer > vector_type
Definition: weakset.h:64
std::string ChannelCacheEntry::CRequester::getRequesterName ( )
virtual

The requester must have a name.

Returns
The requester's name.

Implements epics::pvAccess::Requester.

Definition at line 39 of file chancache.cpp.

40 {
41  return "GWClient";
42 }

Member Data Documentation

ChannelCacheEntry::weak_pointer ChannelCacheEntry::CRequester::chan

Definition at line 140 of file chancache.h.

size_t ChannelCacheEntry::CRequester::num_instances
static

Definition at line 136 of file chancache.h.


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