ers::FIFOStream Class Reference

Queue stream. More...

#include <FIFOStream.h>

Inheritance diagram for ers::FIFOStream:

ers::Stream List of all members.

Public Member Functions

 FIFOStream ()
 FIFOStream (const FIFOStream &other)
 ~FIFOStream ()
virtual void send (const Issue *i)
virtual Issuereceive ()
virtual void print_to (std::ostream &stream) const
 operator std::string () const

Static Public Attributes

static const char *const FIFO_STREAM_KEY = "fifo"
static const char *const NULL_STREAM_KEY = "null"

Protected Attributes

std::deque< Issue * > m_issue_queue

Detailed Description

Queue stream.

This streams is used to transmit Issues inside a process.

Author:
Matthias Wiesmann
Version:
1.0
Note:
This stream is not thread safe - it cannot depend on thread library.

Definition at line 22 of file FIFOStream.h.


Constructor & Destructor Documentation

ers::FIFOStream::FIFOStream (  ) 

Definition at line 28 of file FIFOStream.cxx.

00028 : Stream() {} 

ers::FIFOStream::FIFOStream ( const FIFOStream other  ) 

Definition at line 30 of file FIFOStream.cxx.

References genRecEmupikp::i, m_issue_queue, and EvtCyclic3::other().

00030                                                  : Stream(other) {
00031     for(unsigned int i=0;i<other.m_issue_queue.size();i++) {
00032         Issue *cloned = other.m_issue_queue[i]->clone();
00033         m_issue_queue.push_back(cloned);
00034     } // for
00035 } // FIFOStream

ers::FIFOStream::~FIFOStream (  ) 

Definition at line 37 of file FIFOStream.cxx.

00037 {}


Member Function Documentation

ers::Stream::operator std::string (  )  const [inherited]

Definition at line 35 of file Stream.cxx.

References ers::Stream::print_to().

00035                                     {
00036     std::ostringstream stream ; 
00037     print_to(stream); 
00038     return stream.str(); 
00039 } // to string 

void ers::FIFOStream::print_to ( std::ostream stream  )  const [virtual]

Reimplemented from ers::Stream.

Definition at line 63 of file FIFOStream.cxx.

References FIFO_STREAM_KEY, genRecEmupikp::i, and m_issue_queue.

00063                                                      {
00064     stream << ers::FIFOStream::FIFO_STREAM_KEY << ":[" ;
00065     for(unsigned int i=0;i<m_issue_queue.size();i++) {
00066         stream << m_issue_queue[i]->what() ; 
00067         if (i!=m_issue_queue.size()-1) {
00068             stream << ", " ; 
00069         } // if not last 
00070     } // for elements
00071     stream << "]" ; 
00072 } // print_to

ers::Issue * ers::FIFOStream::receive (  )  [virtual]

Blocking read into the stream.

Returns:
a reference to the next Issue
Note:
This method is not implemented, pending some form of common TDAQ thread library.

Reimplemented from ers::Stream.

Definition at line 56 of file FIFOStream.cxx.

References m_issue_queue.

00056                                  {
00057     if (m_issue_queue.empty()) return 0 ; 
00058     Issue *issue = m_issue_queue[0] ; 
00059     m_issue_queue.pop_front();
00060     return issue ; 
00061 } // receive

void ers::FIFOStream::send ( const Issue i  )  [virtual]

Sends the issue into the stream. This method should put the issue into a FIFO queue and be non blocking

Parameters:
i pointer to the issue to send
Note:
This method is not implemented, pending some form of common TDAQ thread library.

Reimplemented from ers::Stream.

Definition at line 45 of file FIFOStream.cxx.

References ers::Issue::clone(), ERS_PRE_CHECK_PTR, and m_issue_queue.

00045                                                   {
00046     ERS_PRE_CHECK_PTR(issue_ptr); 
00047     Issue *cloned = issue_ptr->clone();
00048     m_issue_queue.push_back(cloned); 
00049 } // send


Member Data Documentation

const char *const ers::FIFOStream::FIFO_STREAM_KEY = "fifo" [static]

Key for FIFO stream

Definition at line 27 of file FIFOStream.h.

Referenced by create_stream(), and print_to().

std::deque<Issue*> ers::FIFOStream::m_issue_queue [protected]

Definition at line 25 of file FIFOStream.h.

Referenced by FIFOStream(), print_to(), receive(), and send().

const char *const ers::Stream::NULL_STREAM_KEY = "null" [static, inherited]

Key for discard stream

Definition at line 39 of file Stream.h.

Referenced by create_stream(), and ers::Stream::print_to().


Generated on Tue Nov 29 23:36:31 2016 for BOSS_7.0.2 by  doxygen 1.4.7