BESXMLCommand.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 A_BESXMLCommand_h
00034 #define A_BESXMLCommand_h 1
00035
00036 #include <string>
00037 #include <map>
00038
00039 using std::string ;
00040 using std::map ;
00041
00042 #include <libxml/encoding.h>
00043
00044 #include "BESObj.h"
00045 #include "BESDataHandlerInterface.h"
00046
00047 class BESResponseHandler ;
00048 class BESXMLCommand ;
00049 typedef BESXMLCommand *(*p_xmlcmd_builder)( const BESDataHandlerInterface &dhi);
00050
00051 class BESXMLCommand : public BESObj
00052 {
00053 private:
00054 static map< string, p_xmlcmd_builder > cmd_list ;
00055 typedef map< string, p_xmlcmd_builder >::iterator cmd_iter ;
00056 protected:
00057 BESDataHandlerInterface _dhi ;
00058 virtual void set_response() ;
00059 string _str_cmd ;
00060 BESXMLCommand( const BESDataHandlerInterface &base_dhi ) ;
00061 public:
00062 virtual ~BESXMLCommand() {}
00063
00064 virtual void parse_request( xmlNode *node ) = 0 ;
00065 virtual bool has_response() = 0 ;
00066 virtual void prep_request() {}
00067 virtual BESDataHandlerInterface &get_dhi() { return _dhi ; }
00068
00069 virtual void dump( ostream &strm ) const ;
00070
00071 static void add_command( const string &cmd_str,
00072 p_xmlcmd_builder cmd ) ;
00073 static bool del_command( const string &cmd_str ) ;
00074 static p_xmlcmd_builder find_command( const string &cmd_str ) ;
00075 } ;
00076
00077 #endif // A_BESXMLCommand_h
00078