MultiMessageDebugStream.cpp

00001 
00002 #include "MultiMessageDebugStream.h"
00003 
00004 #include "mrs/message.h"
00005 #include "SctNames.h"
00006 
00007 namespace Sct {
00008 
00009   void MultiMessageDebugStream::severity(unsigned int s) {
00010     m_severity = s;
00011   };
00012 
00013   bool MultiMessageDebugStream::renew() {
00014     return (m_oss = new std::ostringstream);
00015   };
00016 
00017   MultiMessageDebugStream::MultiMessageDebugStream(const bool out,
00018                                                    const bool err,
00019                                                    const bool mrs) : 
00020     m_out(out),
00021     m_err(err),
00022     m_mrs(mrs),
00023     m_severity(MRS_INFORMATION),
00024     m_oss(0) {
00025   };
00026   
00027   MultiMessageDebugStream::~MultiMessageDebugStream() {
00028     this->flush();
00029     delete m_oss;
00030     m_oss=0;
00031   };
00032   
00033   void MultiMessageDebugStream::flush() {
00034     if (m_oss) {
00035       const std::string s = m_oss->str();
00036       delete m_oss;
00037       m_oss=0;
00038       this->announce(s);
00039     };
00040   };
00041 
00042   void MultiMessageDebugStream::announce(const std::string & s) {
00043     if (m_out) {
00044       std::cout << s << std::endl;
00045     };
00046     if (m_err) {
00047       std::cerr << s << std::endl;
00048     };
00049     if (m_mrs) {
00050       IPCPartition p(SctNames::getPartitionName());
00051       if(p.isValid()) {
00052         MRSStream mrs(p);
00053         mrs << static_cast<SEVERITY>(m_severity) << "MultiMessageDebugStream" << MRS_TEXT(s) << ENDM;
00054       };
00055     };
00056   };
00057   
00058 
00059 };

Generated on Mon Feb 6 14:01:23 2006 for SCT DAQ/DCS Software - C++ by  doxygen 1.4.6