BESConfigResponseHandler.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 "BESConfigResponseHandler.h"
00034 #include "TheBESKeys.h"
00035 #include "BESInfoList.h"
00036 #include "BESInfo.h"
00037 #include "BESResponseNames.h"
00038
00039 BESConfigResponseHandler::BESConfigResponseHandler( const string &name )
00040 : BESResponseHandler( name )
00041 {
00042 }
00043
00044 BESConfigResponseHandler::~BESConfigResponseHandler( )
00045 {
00046 }
00047
00064 void
00065 BESConfigResponseHandler::execute( BESDataHandlerInterface &dhi )
00066 {
00067 BESInfo *info = BESInfoList::TheList()->build_info() ;
00068 _response = info ;
00069
00070 dhi.action_name = CONFIG_RESPONSE_STR ;
00071 info->begin_response( CONFIG_RESPONSE_STR, dhi ) ;
00072 info->add_tag( "file", TheBESKeys::TheKeys()->keys_file_name() ) ;
00073
00074 map<string,string> props ;
00075 BESKeys::Keys_citer ki = TheBESKeys::TheKeys()->keys_begin() ;
00076 BESKeys::Keys_citer ke = TheBESKeys::TheKeys()->keys_end() ;
00077 for( ; ki != ke; ki++ )
00078 {
00079 props.clear() ;
00080 props["name"] = (*ki).first ;
00081 info->add_tag( "key", (*ki).second, &props ) ;
00082 }
00083 info->end_response() ;
00084 }
00085
00098 void
00099 BESConfigResponseHandler::transmit( BESTransmitter *transmitter,
00100 BESDataHandlerInterface &dhi )
00101 {
00102 if( _response )
00103 {
00104 BESInfo *info = dynamic_cast<BESInfo *>(_response) ;
00105 if( !info )
00106 throw BESInternalError( "cast error", __FILE__, __LINE__ ) ;
00107 info->transmit( transmitter, dhi ) ;
00108 }
00109 }
00110
00117 void
00118 BESConfigResponseHandler::dump( ostream &strm ) const
00119 {
00120 strm << BESIndent::LMarg << "BESConfigResponseHandler::dump - ("
00121 << (void *)this << ")" << endl ;
00122 BESIndent::Indent() ;
00123 BESResponseHandler::dump( strm ) ;
00124 BESIndent::UnIndent() ;
00125 }
00126
00127 BESResponseHandler *
00128 BESConfigResponseHandler::ConfigResponseBuilder( const string &name )
00129 {
00130 return new BESConfigResponseHandler( name ) ;
00131 }
00132