BESResponseHandlerList.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 "BESResponseHandlerList.h"
00034
00035 BESResponseHandlerList *BESResponseHandlerList::_instance = 0 ;
00036
00051 bool
00052 BESResponseHandlerList::add_handler( const string &handler_name,
00053 p_response_handler handler_method )
00054 {
00055 BESResponseHandlerList::Handler_citer i ;
00056 i = _handler_list.find( handler_name ) ;
00057 if( i == _handler_list.end() )
00058 {
00059 _handler_list[handler_name] = handler_method ;
00060 return true ;
00061 }
00062 return false ;
00063 }
00064
00074 bool
00075 BESResponseHandlerList::remove_handler( const string &handler_name )
00076 {
00077 BESResponseHandlerList::Handler_iter i ;
00078 i = _handler_list.find( handler_name ) ;
00079 if( i != _handler_list.end() )
00080 {
00081 _handler_list.erase( i ) ;
00082 return true ;
00083 }
00084 return false ;
00085 }
00086
00099 BESResponseHandler *
00100 BESResponseHandlerList::find_handler( const string &handler_name )
00101 {
00102 BESResponseHandlerList::Handler_citer i ;
00103 i = _handler_list.find( handler_name ) ;
00104 if( i != _handler_list.end() )
00105 {
00106 p_response_handler p = (*i).second ;
00107 if( p )
00108 {
00109 return p( handler_name ) ;
00110 }
00111 }
00112 return 0 ;
00113 }
00114
00122 string
00123 BESResponseHandlerList::get_handler_names()
00124 {
00125 string ret ;
00126 bool first_name = true ;
00127 BESResponseHandlerList::Handler_citer i = _handler_list.begin() ;
00128 for( ; i != _handler_list.end(); i++ )
00129 {
00130 if( !first_name )
00131 ret += ", " ;
00132 ret += (*i).first ;
00133 first_name = false ;
00134 }
00135 return ret ;
00136 }
00137
00145 void
00146 BESResponseHandlerList::dump( ostream &strm ) const
00147 {
00148 strm << BESIndent::LMarg << "BESResponseHandlerList::dump - ("
00149 << (void *)this << ")" << endl ;
00150 BESIndent::Indent() ;
00151 if( _handler_list.size() )
00152 {
00153 strm << BESIndent::LMarg << "registered response handlers:" << endl ;
00154 BESIndent::Indent() ;
00155 BESResponseHandlerList::Handler_citer i = _handler_list.begin() ;
00156 BESResponseHandlerList::Handler_citer ie = _handler_list.end() ;
00157 for( ; i != ie; i++ )
00158 {
00159 strm << BESIndent::LMarg << (*i).first << endl ;
00160 }
00161 BESIndent::UnIndent() ;
00162 }
00163 else
00164 {
00165 strm << BESIndent::LMarg << "registered response handlers: none" << endl ;
00166 }
00167 BESIndent::UnIndent() ;
00168 }
00169
00170 BESResponseHandlerList *
00171 BESResponseHandlerList::TheList()
00172 {
00173 if( _instance == 0 )
00174 {
00175 _instance = new BESResponseHandlerList ;
00176 }
00177 return _instance ;
00178 }
00179