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 #include <util.h>
00034
00035 using namespace libdap ;
00036
00037 #include "BESDapRequestHandler.h"
00038 #include "BESResponseHandler.h"
00039 #include "BESDapNames.h"
00040 #include "BESResponseNames.h"
00041 #include "BESVersionInfo.h"
00042
00043 BESDapRequestHandler::BESDapRequestHandler( const string &name )
00044 : BESRequestHandler( name )
00045 {
00046 add_handler( HELP_RESPONSE, BESDapRequestHandler::dap_build_help ) ;
00047 add_handler( VERS_RESPONSE, BESDapRequestHandler::dap_build_version ) ;
00048 }
00049
00050 BESDapRequestHandler::~BESDapRequestHandler()
00051 {
00052 }
00053
00054 bool
00055 BESDapRequestHandler::dap_build_help( BESDataHandlerInterface &dhi )
00056 {
00057 BESResponseObject *response = dhi.response_handler->get_response_object() ;
00058 BESInfo *info = dynamic_cast < BESInfo * >(response) ;
00059 if( !info )
00060 throw BESInternalError( "cast error", __FILE__, __LINE__ ) ;
00061
00062 map<string,string> attrs ;
00063 attrs["name"] = libdap_name() ;
00064 attrs["version"] = libdap_version() ;
00065 info->begin_tag( "module", &attrs ) ;
00066 info->add_data_from_file( "DAP.Help", "DAP Help" ) ;
00067 info->end_tag( "module" ) ;
00068
00069 return true ;
00070 }
00071
00072 bool
00073 BESDapRequestHandler::dap_build_version( BESDataHandlerInterface &dhi )
00074 {
00075 BESResponseObject *response = dhi.response_handler->get_response_object() ;
00076 BESVersionInfo *info = dynamic_cast < BESVersionInfo * >(response) ;
00077 if( !info )
00078 throw BESInternalError( "cast error", __FILE__, __LINE__ ) ;
00079
00080 info->add_library( libdap_name(), libdap_version() ) ;
00081 list<string> versions ;
00082 versions.push_back( "2.0" ) ;
00083 versions.push_back( "3.0" ) ;
00084 versions.push_back( "3.2" ) ;
00085 info->add_service( OPENDAP_SERVICE, versions ) ;
00086
00087 return true ;
00088 }
00089
00096 void
00097 BESDapRequestHandler::dump( ostream &strm ) const
00098 {
00099 strm << BESIndent::LMarg << "BESDapRequestHandler::dump - ("
00100 << (void *)this << ")" << endl ;
00101 BESIndent::Indent() ;
00102 BESRequestHandler::dump( strm ) ;
00103 BESIndent::UnIndent() ;
00104 }
00105