BESProcIdResponseHandler.cc
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #include "config.h"
00034
00035 #include "BESProcIdResponseHandler.h"
00036 #include "BESInfoList.h"
00037 #include "BESInfo.h"
00038 #include "BESResponseNames.h"
00039 #include "BESUtil.h"
00040
00041 BESProcIdResponseHandler::BESProcIdResponseHandler( const string &name )
00042 : BESResponseHandler( name )
00043 {
00044 }
00045
00046 BESProcIdResponseHandler::~BESProcIdResponseHandler( )
00047 {
00048 }
00049
00061 void
00062 BESProcIdResponseHandler::execute( BESDataHandlerInterface &dhi )
00063 {
00064 BESInfo *info = BESInfoList::TheList()->build_info() ;
00065 _response = info ;
00066 dhi.action_name = PROCESS_RESPONSE_STR ;
00067 info->begin_response( PROCESS_RESPONSE_STR, dhi ) ;
00068 char mypid[12] ;
00069 BESUtil::fastpidconverter( mypid, 10 ) ;
00070 map<string,string> props ;
00071 props["pid"] = mypid ;
00072 info->add_tag( "process", "", &props ) ;
00073 info->end_response() ;
00074 }
00075
00088 void
00089 BESProcIdResponseHandler::transmit( BESTransmitter *transmitter,
00090 BESDataHandlerInterface &dhi )
00091 {
00092 if( _response )
00093 {
00094 BESInfo *info = dynamic_cast<BESInfo *>(_response) ;
00095 if( !info )
00096 throw BESInternalError( "cast error", __FILE__, __LINE__ ) ;
00097 info->transmit( transmitter, dhi ) ;
00098 }
00099 }
00100
00107 void
00108 BESProcIdResponseHandler::dump( ostream &strm ) const
00109 {
00110 strm << BESIndent::LMarg << "BESProcIdResponseHandler::dump - ("
00111 << (void *)this << ")" << endl ;
00112 BESIndent::Indent() ;
00113 BESResponseHandler::dump( strm ) ;
00114 BESIndent::UnIndent() ;
00115 }
00116
00117 BESResponseHandler *
00118 BESProcIdResponseHandler::ProcIdResponseBuilder( const string &name )
00119 {
00120 return new BESProcIdResponseHandler( name ) ;
00121 }
00122