BESServiceRegistry.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_BESServiceRegistry_h
00034 #define I_BESServiceRegistry_h 1
00035
00036 #include <string>
00037 #include <map>
00038 #include <list>
00039
00040 using std::string ;
00041 using std::map ;
00042 using std::list ;
00043
00044 #include "BESObj.h"
00045
00046 class BESInfo ;
00047
00060 class BESServiceRegistry : public BESObj
00061 {
00062 private:
00063 typedef struct _service_cmd
00064 {
00065 string _description ;
00066 map<string,string> _formats ;
00067 } service_cmd ;
00068 static BESServiceRegistry * _instance ;
00069 map<string,map<string,service_cmd> >_services ;
00070 map<string,map<string,string> > _handles ;
00071 protected:
00072 BESServiceRegistry(void) ;
00073 public:
00074 virtual ~BESServiceRegistry(void) ;
00075
00076 virtual void add_service( const string &name ) ;
00077 virtual void add_to_service( const string &service,
00078 const string &cmd,
00079 const string &cmd_descript,
00080 const string &format ) ;
00081 virtual void add_format( const string &service,
00082 const string &cmd,
00083 const string &format ) ;
00084
00085 virtual void remove_service( const string &name ) ;
00086
00087 virtual bool service_available( const string &name,
00088 const string &cmd = "",
00089 const string &format = "" ) ;
00090
00091 virtual void handles_service( const string &handler,
00092 const string &service ) ;
00093
00094 virtual bool does_handle_service( const string &handler,
00095 const string &service ) ;
00096 virtual void services_handled( const string &handler,
00097 list<string> &services ) ;
00098
00099 virtual void show_services( BESInfo &info ) ;
00100
00101 virtual void dump( ostream &strm ) const ;
00102
00103 static BESServiceRegistry * TheRegistry() ;
00104 };
00105
00106 #endif // I_BESServiceRegistry_h
00107