CPN
Computational Process Networks
Public Member Functions | Private Attributes | List of all members
CPN::IQueue< T > Class Template Reference

Template class to do type conversion for reader end of the queue. More...

#include <IQueue.h>

+ Collaboration diagram for CPN::IQueue< T >:

Public Member Functions

 IQueue ()
 
 IQueue (shared_ptr< QueueReader > q)
 
const T * GetDequeuePtr (unsigned thresh, unsigned chan=0)
 
void Dequeue (unsigned count)
 
bool Dequeue (T *data, unsigned count)
 
bool Dequeue (T *data, unsigned count, unsigned numChans, unsigned chanStride)
 
void Reset ()
 
bool Flushed ()
 
unsigned NumChannels () const
 
unsigned MaxThreshold () const
 
unsigned QueueLength () const
 
unsigned Count () const
 
bool Empty () const
 
unsigned ChannelStride () const
 
Key_t GetKey () const
 
shared_ptr< QueueReaderGetReader ()
 
void Release ()
 Release this reader all further actions are invalid. More...
 

Private Attributes

shared_ptr< QueueReaderqueue
 

Detailed Description

template<class T>
class CPN::IQueue< T >

Template class to do type conversion for reader end of the queue.

Definition at line 39 of file IQueue.h.

Constructor & Destructor Documentation

template<class T >
CPN::IQueue< T >::IQueue ( )
inline

Definition at line 41 of file IQueue.h.

41 {}
template<class T >
CPN::IQueue< T >::IQueue ( shared_ptr< QueueReader q)
inline

Definition at line 42 of file IQueue.h.

References CPN::IQueue< T >::queue, and CPN::TypeCompatable().

42  : queue(q) {
43  if (!TypeCompatable(TypeName<T>(), queue->GetDatatype())) {
44  throw TypeMismatchException(TypeName<T>(), queue->GetDatatype());
45  }
46  }
shared_ptr< QueueReader > queue
Definition: IQueue.h:111
bool TypeCompatable(const std::string &type1, const std::string &type2)

+ Here is the call graph for this function:

Member Function Documentation

template<class T >
unsigned CPN::IQueue< T >::ChannelStride ( ) const
inline
Returns
the current channel stride, only call this right after a successful call to GetDequeuePtr.

Definition at line 103 of file IQueue.h.

References CPN::IQueue< T >::queue.

103 { return queue->ChannelStride()/GetTypeSize<T>(); }
shared_ptr< QueueReader > queue
Definition: IQueue.h:111
template<class T >
unsigned CPN::IQueue< T >::Count ( ) const
inline
Returns
the number of data elements in the channel

Definition at line 99 of file IQueue.h.

References CPN::IQueue< T >::queue.

99 { return queue->Count()/GetTypeSize<T>(); }
shared_ptr< QueueReader > queue
Definition: IQueue.h:111
template<class T >
void CPN::IQueue< T >::Dequeue ( unsigned  count)
inline

Dispose of count elements from the queue.

Parameters
countthe number to dispose of

Definition at line 63 of file IQueue.h.

References CPN::IQueue< T >::queue.

63  {
64  queue->Dequeue(GetTypeSize<T>() * count);
65  }
shared_ptr< QueueReader > queue
Definition: IQueue.h:111
template<class T >
bool CPN::IQueue< T >::Dequeue ( T *  data,
unsigned  count 
)
inline

Read count element into the array data.

Parameters
datathe array
countthe number of elements
Returns
true on success, false if the endpoint has shutdown

Definition at line 73 of file IQueue.h.

References CPN::IQueue< T >::queue.

73  {
74  return queue->RawDequeue((void*)data, GetTypeSize<T>() * count);
75  }
shared_ptr< QueueReader > queue
Definition: IQueue.h:111
template<class T >
bool CPN::IQueue< T >::Dequeue ( T *  data,
unsigned  count,
unsigned  numChans,
unsigned  chanStride 
)
inline

Read count element into the 2D array data with the given number of channels and channel stride.

Parameters
datathe array
countthe number of elements in each channel
numChansthe number of channels
chanStridethe number of elements between each channel

Definition at line 85 of file IQueue.h.

References CPN::IQueue< T >::queue.

85  {
86  return queue->RawDequeue((void*)data, GetTypeSize<T>() * count,
87  numChans, GetTypeSize<T>() * chanStride);
88  }
shared_ptr< QueueReader > queue
Definition: IQueue.h:111
template<class T >
bool CPN::IQueue< T >::Empty ( ) const
inline
Returns
true if empty, false otherwise

Definition at line 101 of file IQueue.h.

References CPN::IQueue< T >::queue.

101 { return queue->Empty(); }
shared_ptr< QueueReader > queue
Definition: IQueue.h:111
template<class T >
bool CPN::IQueue< T >::Flushed ( )
inline

Definition at line 91 of file IQueue.h.

References CPN::IQueue< T >::queue.

91 { return queue->Flushed(); }
shared_ptr< QueueReader > queue
Definition: IQueue.h:111
template<class T >
const T* CPN::IQueue< T >::GetDequeuePtr ( unsigned  thresh,
unsigned  chan = 0 
)
inline

Get an array of the given type of the given length from the given channel to read from.

Parameters
threshthe size of the returned array.
chanthe channel
Returns
the array

Definition at line 55 of file IQueue.h.

References CPN::IQueue< T >::queue.

55  {
56  return (T*) queue->GetRawDequeuePtr(GetTypeSize<T>() * thresh, chan);
57  }
shared_ptr< QueueReader > queue
Definition: IQueue.h:111
template<class T >
Key_t CPN::IQueue< T >::GetKey ( ) const
inline
Returns
the endpoint key

Definition at line 105 of file IQueue.h.

References CPN::IQueue< T >::queue.

105 { return queue->GetKey(); }
shared_ptr< QueueReader > queue
Definition: IQueue.h:111
template<class T >
shared_ptr<QueueReader> CPN::IQueue< T >::GetReader ( )
inline
Returns
the underlying reader

Definition at line 107 of file IQueue.h.

References CPN::IQueue< T >::queue.

107 { return queue; }
shared_ptr< QueueReader > queue
Definition: IQueue.h:111
template<class T >
unsigned CPN::IQueue< T >::MaxThreshold ( ) const
inline
Returns
the maximum threshold in data elements

Definition at line 96 of file IQueue.h.

References CPN::IQueue< T >::queue.

96 { return queue->MaxThreshold()/GetTypeSize<T>(); }
shared_ptr< QueueReader > queue
Definition: IQueue.h:111
template<class T >
unsigned CPN::IQueue< T >::NumChannels ( ) const
inline
Returns
the number of channels

Definition at line 94 of file IQueue.h.

References CPN::IQueue< T >::queue.

94 { return queue->NumChannels(); }
shared_ptr< QueueReader > queue
Definition: IQueue.h:111
template<class T >
unsigned CPN::IQueue< T >::QueueLength ( ) const
inline

Definition at line 97 of file IQueue.h.

References CPN::IQueue< T >::queue.

97 { return queue->QueueLength()/GetTypeSize<T>(); }
shared_ptr< QueueReader > queue
Definition: IQueue.h:111
template<class T >
void CPN::IQueue< T >::Release ( )
inline

Release this reader all further actions are invalid.

Definition at line 109 of file IQueue.h.

References CPN::IQueue< T >::queue.

109 { queue->Release(); queue.reset(); }
shared_ptr< QueueReader > queue
Definition: IQueue.h:111
template<class T >
void CPN::IQueue< T >::Reset ( )
inline

Definition at line 90 of file IQueue.h.

References CPN::IQueue< T >::queue.

90 { queue->Reset(); }
shared_ptr< QueueReader > queue
Definition: IQueue.h:111

Member Data Documentation

template<class T >
shared_ptr<QueueReader> CPN::IQueue< T >::queue
private

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