OrocosComponentLibrary  2.7.0
ConsoleReporting.cpp
00001 
00002 #include "ConsoleReporting.hpp"
00003 #include <rtt/Logger.hpp>
00004 #include "TableMarshaller.hpp"
00005 #include "NiceHeaderMarshaller.hpp"
00006 
00007 #include "ocl/Component.hpp"
00008 ORO_LIST_COMPONENT_TYPE(OCL::ConsoleReporting)
00009 
00010 namespace OCL
00011 {
00012     using namespace RTT;
00013     using namespace std;
00014 
00015     ConsoleReporting::ConsoleReporting(std::string fr_name /*= "Reporting"*/, std::ostream& console /*= std::cerr*/)
00016         : ReportingComponent( fr_name ),
00017           mconsole( console )
00018     {
00019     }
00020 
00021         bool ConsoleReporting::startHook()
00022         {
00023             RTT::Logger::In in("ConsoleReporting::startup");
00024             if (mconsole) {
00025                 RTT::marsh::MarshallInterface* fheader;
00026                 RTT::marsh::MarshallInterface* fbody;
00027                 if ( this->writeHeader)
00028                     fheader = new RTT::NiceHeaderMarshaller<std::ostream>( mconsole );
00029                 else
00030                     fheader = 0;
00031                 fbody = new RTT::TableMarshaller<std::ostream>( mconsole );
00032 
00033                 this->addMarshaller( fheader, fbody );
00034             } else {
00035                 log(Error) << "Could not write to console for reporting."<<RTT::endlog();
00036             }
00037 
00038             return ReportingComponent::startHook();
00039         }
00040 
00041         void ConsoleReporting::stopHook()
00042         {
00043             ReportingComponent::stopHook();
00044 
00045             this->removeMarshallers();
00046         }
00047 
00048         bool ConsoleReporting::screenComponent( const std::string& comp)
00049         {
00050             if ( !mconsole )
00051                 return false;
00052             return this->screenImpl( comp, mconsole );
00053         }
00054 }
00055