BESDapModule.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 #include <iostream>
00033
00034 using std::endl ;
00035
00036 #include "BESDapModule.h"
00037
00038 #include "BESDapRequestHandler.h"
00039 #include "BESRequestHandlerList.h"
00040
00041 #include "BESResponseNames.h"
00042 #include "BESResponseHandlerList.h"
00043
00044 #include "BESDASResponseHandler.h"
00045 #include "BESDDSResponseHandler.h"
00046 #include "BESDataResponseHandler.h"
00047 #include "BESDDXResponseHandler.h"
00048
00049 #include "BESCatalogResponseHandler.h"
00050
00051 #include "BESServiceRegistry.h"
00052
00053 #include "BESDapTransmit.h"
00054 #include "BESTransmitter.h"
00055 #include "BESReturnManager.h"
00056 #include "BESTransmitterNames.h"
00057
00058 #include "BESDebug.h"
00059 #include "BESInternalFatalError.h"
00060 #include "BESExceptionManager.h"
00061 #include "BESDapError.h"
00062
00063 void
00064 BESDapModule::initialize( const string &modname )
00065 {
00066 BESDEBUG( "dap", "Initializing DAP Modules:" << endl )
00067
00068 BESDEBUG( "dap", " adding " << modname << " request handler" << endl )
00069 BESRequestHandlerList::TheList()->add_handler( modname, new BESDapRequestHandler( modname ) ) ;
00070
00071 BESDEBUG( "dap", " adding " << DAS_RESPONSE << " response handler" << endl )
00072 BESResponseHandlerList::TheList()->add_handler( DAS_RESPONSE, BESDASResponseHandler::DASResponseBuilder ) ;
00073
00074 BESDEBUG( "dap", " adding " << DDS_RESPONSE << " response handler" << endl )
00075 BESResponseHandlerList::TheList()->add_handler( DDS_RESPONSE, BESDDSResponseHandler::DDSResponseBuilder ) ;
00076
00077 BESDEBUG( "dap", " adding " << DDX_RESPONSE << " response handler" << endl )
00078 BESResponseHandlerList::TheList()->add_handler( DDX_RESPONSE, BESDDXResponseHandler::DDXResponseBuilder ) ;
00079
00080 BESDEBUG( "dap", " adding " << DATA_RESPONSE << " response handler" << endl )
00081 BESResponseHandlerList::TheList()->add_handler( DATA_RESPONSE, BESDataResponseHandler::DataResponseBuilder ) ;
00082
00083 BESDEBUG( "dap", " adding " << CATALOG_RESPONSE << " response handler" << endl )
00084 BESResponseHandlerList::TheList()->add_handler( CATALOG_RESPONSE, BESCatalogResponseHandler::CatalogResponseBuilder ) ;
00085
00086 BESDEBUG( "dap", "Adding " << OPENDAP_SERVICE << " services:" << endl )
00087 BESServiceRegistry *registry = BESServiceRegistry::TheRegistry() ;
00088 registry->add_service( OPENDAP_SERVICE ) ;
00089 registry->add_to_service( OPENDAP_SERVICE, DAS_SERVICE,
00090 DAS_DESCRIPT, DAP2_FORMAT ) ;
00091 registry->add_to_service( OPENDAP_SERVICE, DDS_SERVICE,
00092 DDS_DESCRIPT, DAP2_FORMAT ) ;
00093 registry->add_to_service( OPENDAP_SERVICE, DDX_SERVICE,
00094 DDX_DESCRIPT, DAP2_FORMAT ) ;
00095 registry->add_to_service( OPENDAP_SERVICE, DATA_SERVICE,
00096 DATA_DESCRIPT, DAP2_FORMAT ) ;
00097
00098 BESDEBUG( "dap", "Initializing DAP Basic Transmitters:" << endl )
00099 BESReturnManager::TheManager()->add_transmitter( DAP2_FORMAT,
00100 new BESDapTransmit( ) ) ;
00101
00102 BESDEBUG( "dap", " adding dap exception handler" << endl )
00103 BESExceptionManager::TheEHM()->add_ehm_callback( BESDapError::handleException ) ;
00104
00105 BESDEBUG( "dap", " adding dap debug context" << endl )
00106 BESDebug::Register( "dap" ) ;
00107
00108 BESDEBUG( "dap", "Done Initializing DAP Modules:" << endl )
00109 }
00110
00111 void
00112 BESDapModule::terminate( const string &modname )
00113 {
00114 BESDEBUG( "dap", "Removing DAP Modules:" << endl )
00115
00116 BESDEBUG( "dap", " removing dap Response handlers " << modname << endl )
00117 BESResponseHandlerList::TheList()->remove_handler( DAS_RESPONSE ) ;
00118 BESResponseHandlerList::TheList()->remove_handler( DDS_RESPONSE ) ;
00119 BESResponseHandlerList::TheList()->remove_handler( DDX_RESPONSE ) ;
00120 BESResponseHandlerList::TheList()->remove_handler( DATA_RESPONSE ) ;
00121 BESResponseHandlerList::TheList()->remove_handler( CATALOG_RESPONSE ) ;
00122
00123 BESDEBUG( "dap", " removing " << OPENDAP_SERVICE << " services" << endl )
00124 BESServiceRegistry::TheRegistry()->remove_service( OPENDAP_SERVICE ) ;
00125
00126 BESDEBUG( "dap", " removing dap Request Handler " << modname << endl )
00127 BESRequestHandler *rh = BESRequestHandlerList::TheList()->remove_handler( modname ) ;
00128 if( rh ) delete rh ;
00129
00130 BESDEBUG( "dap", "Done Removing DAP Modules:" << endl )
00131 }
00132
00139 void
00140 BESDapModule::dump( ostream &strm ) const
00141 {
00142 strm << BESIndent::LMarg << "BESDapModule::dump - ("
00143 << (void *)this << ")" << endl ;
00144 }
00145
00146 extern "C"
00147 {
00148 BESAbstractModule *maker()
00149 {
00150 return new BESDapModule ;
00151 }
00152 }
00153