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 };