/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Event/ers/ers-00-00-03/src/FIFOStream.cxx

Go to the documentation of this file.
00001 /*
00002  *  FIFOStream.cxx
00003  *  ers
00004  *
00005  *  Created by Matthias Wiesmann on 02.12.04.
00006  *  Copyright 2004 CERN. All rights reserved.
00007  *
00008  */
00009 
00010 #include "ers/FIFOStream.h"
00011 #include "ers/Precondition.h"
00012 #include "ers/NotImplemented.h"
00013 #include "ers/InvalidReferenceIssue.h"
00014 #include "ers/StreamFactory.h"
00015 
00016 const char* const ers::FIFOStream::FIFO_STREAM_KEY = "fifo" ; 
00017 
00018 namespace {
00019     ers::Stream *create_stream(const std::string &protocol, const std::string &uri) { 
00020         (void) uri ; // to shut up the compiler 
00021         if (protocol==ers::FIFOStream::FIFO_STREAM_KEY) return new ers::FIFOStream() ; 
00022         return 0 ;
00023     } 
00024     bool registered = ers::StreamFactory::instance()->register_factory(ers::FIFOStream::FIFO_STREAM_KEY,create_stream) ;
00025 } 
00026 
00027 
00028 ers::FIFOStream::FIFOStream() : Stream() {} 
00029 
00030 ers::FIFOStream::FIFOStream(const FIFOStream &other) : 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
00036 
00037 ers::FIFOStream::~FIFOStream() {}
00038 
00045 void ers::FIFOStream::send(const ers::Issue *issue_ptr) {
00046     ERS_PRE_CHECK_PTR(issue_ptr); 
00047     Issue *cloned = issue_ptr->clone();
00048     m_issue_queue.push_back(cloned); 
00049 } // send
00050 
00056 ers::Issue *ers::FIFOStream::receive() {
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
00062 
00063 void ers::FIFOStream::print_to(std::ostream& stream) const {
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
00073 
00074 

Generated on Tue Nov 29 22:58:27 2016 for BOSS_7.0.2 by  doxygen 1.4.7