BESInterface.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 BESInterface_h_
00034 #define BESInterface_h_ 1
00035
00036 #include <list>
00037
00038 using std::list ;
00039
00040 #include "BESDataHandlerInterface.h"
00041
00042 #include "BESObj.h"
00043
00044 class BESError ;
00045 class BESTransmitter ;
00046
00047 typedef bool (*p_bes_init)( BESDataHandlerInterface &dhi ) ;
00048 typedef void (*p_bes_end)( BESDataHandlerInterface &dhi ) ;
00049
00123 class BESInterface : public BESObj
00124 {
00125 private:
00126 typedef list< p_bes_init >::const_iterator init_citer ;
00127 typedef list< p_bes_init >::iterator init_iter ;
00128 static list< p_bes_init > _init_list ;
00129
00130 typedef list< p_bes_end >::const_iterator end_citer ;
00131 typedef list< p_bes_end >::iterator end_iter ;
00132 static list< p_bes_end > _end_list ;
00133
00134 ostream *_strm ;
00135 protected:
00136 BESDataHandlerInterface *_dhi ;
00137 BESTransmitter *_transmitter ;
00138
00139 virtual int exception_manager( BESError &e ) ;
00140 virtual void initialize() ;
00141 virtual void validate_data_request() ;
00142
00151 virtual void build_data_request_plan() = 0 ;
00152
00153 virtual void execute_data_request_plan() ;
00154 virtual void invoke_aggregation() ;
00155
00156 virtual int finish( int status ) ;
00157 virtual void transmit_data() ;
00158 virtual void log_status() ;
00159 virtual void report_request() ;
00160 virtual void end_request() ;
00161 virtual void clean() ;
00162
00163 BESInterface( ostream *strm ) ;
00164 virtual ~BESInterface() ;
00165 public:
00166 virtual int execute_request( const string &from ) ;
00167 virtual int finish_with_error( int status ) ;
00168
00169 virtual void dump( ostream &strm ) const ;
00170
00171 static void add_init_callback( p_bes_init init ) ;
00172 static void add_end_callback( p_bes_end end ) ;
00173 } ;
00174
00175 #endif // BESInterface_h_
00176