BESRequestHandler.h
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 #ifndef I_BESRequestHandler_h
00034 #define I_BESRequestHandler_h 1
00035
00036 #include <map>
00037 #include <string>
00038
00039 using std::map ;
00040 using std::string ;
00041
00042 #include "BESObj.h"
00043 #include "BESDataHandlerInterface.h"
00044
00045 typedef bool (*p_request_handler)(BESDataHandlerInterface &);
00046 #define BES_REQUEST_HANDLER_CATCH_ALL "catch_all"
00047
00073 class BESRequestHandler : public BESObj
00074 {
00075 private:
00076 map< string, p_request_handler > _handler_list ;
00077 string _name ;
00078 public:
00079 BESRequestHandler( const string &name )
00080 : _name( name ) {}
00081 virtual ~BESRequestHandler(void) {}
00082
00083 typedef map< string, p_request_handler >::const_iterator Handler_citer ;
00084 typedef map< string, p_request_handler >::iterator Handler_iter ;
00085
00086 virtual const string & get_name( ) const { return _name ; }
00087
00088 virtual bool add_handler( const string &handler_name,
00089 p_request_handler handler_method ) ;
00090 virtual bool remove_handler( const string &handler_name ) ;
00091 virtual p_request_handler find_handler( const string &handler_name ) ;
00092
00093 virtual string get_handler_names() ;
00094
00095 virtual void dump( ostream &strm ) const ;
00096 };
00097
00098 #endif // I_BESRequestHandler_h
00099