OpenDDS  Snapshot(2023/04/07-19:43)
Classes | Public Types | Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
OpenDDS::DCPS::InternalDataReaderListener< T > Class Template Referenceabstract

#include <InternalDataReaderListener.h>

Inheritance diagram for OpenDDS::DCPS::InternalDataReaderListener< T >:
Inheritance graph
[legend]
Collaboration diagram for OpenDDS::DCPS::InternalDataReaderListener< T >:
Collaboration graph
[legend]

Classes

class  ListenerJob
 

Public Types

typedef RcHandle< InternalDataReader< T > > InternalDataReader_rch
 

Public Member Functions

 InternalDataReaderListener ()
 
 InternalDataReaderListener (JobQueue_rch job_queue)
 
void job_queue (JobQueue_rch job_queue)
 
virtual void on_data_available (InternalDataReader_rch reader)=0
 
InternalDataReader Interface
void schedule (InternalDataReader_rch reader)
 
- Public Member Functions inherited from OpenDDS::DCPS::RcObject
virtual ~RcObject ()
 
virtual void _add_ref ()
 
virtual void _remove_ref ()
 
long ref_count () const
 
WeakObject_get_weak_object () const
 

Private Types

typedef WeakRcHandle< InternalDataReader< T > > Reader
 

Private Member Functions

typedef OPENDDS_SET (Reader) ReaderSet
 
void execute ()
 

Private Attributes

JobPtr job_
 
JobQueue_wrch job_queue_
 
ReaderSet readers_
 
ACE_Thread_Mutex mutex_
 

Additional Inherited Members

- Protected Member Functions inherited from OpenDDS::DCPS::RcObject
 RcObject ()
 

Detailed Description

template<typename T>
class OpenDDS::DCPS::InternalDataReaderListener< T >

Definition at line 28 of file InternalDataReaderListener.h.

Member Typedef Documentation

◆ InternalDataReader_rch

Definition at line 30 of file InternalDataReaderListener.h.

◆ Reader

template<typename T>
typedef WeakRcHandle<InternalDataReader<T> > OpenDDS::DCPS::InternalDataReaderListener< T >::Reader
private

Definition at line 85 of file InternalDataReaderListener.h.

Constructor & Destructor Documentation

◆ InternalDataReaderListener() [1/2]

Definition at line 32 of file InternalDataReaderListener.h.

33  : job_(make_rch<ListenerJob>(rchandle_from(this)))
34  {}
RcHandle< T > rchandle_from(T *pointer)
Definition: RcHandle_T.h:310

◆ InternalDataReaderListener() [2/2]

template<typename T>
OpenDDS::DCPS::InternalDataReaderListener< T >::InternalDataReaderListener ( JobQueue_rch  job_queue)
inlineexplicit

Definition at line 36 of file InternalDataReaderListener.h.

37  : job_(make_rch<ListenerJob>(rchandle_from(this)))
39  {}
RcHandle< T > rchandle_from(T *pointer)
Definition: RcHandle_T.h:310

Member Function Documentation

◆ execute()

template<typename T>
void OpenDDS::DCPS::InternalDataReaderListener< T >::execute ( void  )
inlineprivate

Definition at line 91 of file InternalDataReaderListener.h.

92  {
93  ReaderSet readers;
94 
95  {
97  std::swap(readers, readers_);
98  }
99 
100  for (typename ReaderSet::const_iterator pos = readers.begin(), limit = readers.end();
101  pos != limit; ++pos) {
102  InternalDataReader_rch reader = pos->lock();
103  if (reader) {
104  on_data_available(reader);
105  }
106  }
107  }
#define ACE_GUARD(MUTEX, OBJ, LOCK)
RcHandle< InternalDataReader< T > > InternalDataReader_rch
virtual void on_data_available(InternalDataReader_rch reader)=0
void swap(MessageBlock &lhs, MessageBlock &rhs)

◆ job_queue()

template<typename T>
void OpenDDS::DCPS::InternalDataReaderListener< T >::job_queue ( JobQueue_rch  job_queue)
inline

◆ on_data_available()

template<typename T>
virtual void OpenDDS::DCPS::InternalDataReaderListener< T >::on_data_available ( InternalDataReader_rch  reader)
pure virtual

◆ OPENDDS_SET()

template<typename T>
typedef OpenDDS::DCPS::InternalDataReaderListener< T >::OPENDDS_SET ( Reader  )
private

◆ schedule()

template<typename T>
void OpenDDS::DCPS::InternalDataReaderListener< T >::schedule ( InternalDataReader_rch  reader)
inline

Definition at line 50 of file InternalDataReaderListener.h.

51  {
53  JobQueue_rch lock = job_queue_.lock();
54  if (lock) {
55  const bool enqueue = readers_.empty();
56  readers_.insert(reader);
57  if (enqueue) {
58  lock->enqueue(job_);
59  }
60  }
61  }
#define ACE_GUARD(MUTEX, OBJ, LOCK)
RcHandle< T > lock() const
Definition: RcObject.h:188
RcHandle< JobQueue > JobQueue_rch
Definition: JobQueue.h:80

Member Data Documentation

◆ job_

template<typename T>
JobPtr OpenDDS::DCPS::InternalDataReaderListener< T >::job_
private

◆ job_queue_

template<typename T>
JobQueue_wrch OpenDDS::DCPS::InternalDataReaderListener< T >::job_queue_
private

◆ mutex_

template<typename T>
ACE_Thread_Mutex OpenDDS::DCPS::InternalDataReaderListener< T >::mutex_
mutableprivate

◆ readers_

template<typename T>
ReaderSet OpenDDS::DCPS::InternalDataReaderListener< T >::readers_
private

The documentation for this class was generated from the following file: