BESApacheInterface Class Reference

Entry point into OPeNDAP using apache modules. More...

#include <BESApacheInterface.h>

Inheritance diagram for BESApacheInterface:

Inheritance graph
[legend]
Collaboration diagram for BESApacheInterface:

Collaboration graph
[legend]

List of all members.

Public Member Functions

 BESApacheInterface (const BESDataRequestInterface &dri)
 Instantiate a BESApacheInterface object.
virtual ~BESApacheInterface ()
virtual int execute_request ()
 Override execute_request in order to register memory pool.
virtual int execute_request (const string &from)
 Override execute_request in order to register memory pool.
virtual void dump (ostream &strm) const
 dumps information about this object

Static Public Member Functions

static void add_init_callback (p_bes_init init)
static void add_end_callback (p_bes_end end)

Protected Member Functions

virtual int exception_manager (BESException &e)
 Handle any exceptions generated from the request.
virtual void initialize ()
 Initialize the BES object from the apache environment.
virtual void validate_data_request ()
 Validate the information in the BESDataRequestInterface.
virtual void build_data_request_plan ()
 Build the data request plan using the BESCmdParser.
virtual void execute_data_request_plan ()
 Execute the data request plan.
virtual void invoke_aggregation ()
 Invoke the aggregation server, if there is one.
virtual void transmit_data ()
 Transmit the response object.
virtual void log_status ()
 Log the status of the request to the BESLog file.
virtual void clean ()
 Clean up after the request is completed.
virtual void report_request ()
 Report the request and status of the request to BESReporterList::TheList().
virtual void end_request ()
 End the BES request.

Protected Attributes

BESDataHandlerInterface _dhi
BESTransmitter_transmitter


Detailed Description

Entry point into OPeNDAP using apache modules.

The BESApacheInterface class is the entry point for accessing information using OPeNDAP through apache modules.

The format of the request looks somethink like:

get das for sym1,sym2 with sym1.constraint="constraint",sym2.constraint="constraint";

In this example a DAS object response is being requested. The DAS object is to be built from the two symbolic names where each symbolic name has a constraint associated with it. The symbolic names are resoleved to be real files for a given server type. For example, sym1 could resolve to a file accessed through cedar and sym2 could resolve to a file accessed through netcdf.

BESApacheInterface uses BESParser in order to build the list of containers (symbolic containers resolving to real file and server type). Because the request is being made from a browser, a BESBasicHttpTransmitter object is used to transmit the response object back to the requesting browser.

See also:
BESInterface

BESParser

BESBasicHttpTransmitter

Definition at line 75 of file BESApacheInterface.h.


Constructor & Destructor Documentation

BESApacheInterface::BESApacheInterface ( const BESDataRequestInterface dri  ) 

Instantiate a BESApacheInterface object.

Parameters:
dri BESDataRequestInterface built using information from the apache module including the request and constraint passed as part of the URL.
See also:
_BESDataRequestInterface

Definition at line 60 of file BESApacheInterface.cc.

BESApacheInterface::~BESApacheInterface (  )  [virtual]

Definition at line 66 of file BESApacheInterface.cc.

References BESCmdInterface::clean().

Here is the call graph for this function:


Member Function Documentation

int BESApacheInterface::exception_manager ( BESException e  )  [protected, virtual]

Handle any exceptions generated from the request.

Captures if there is an error in the request format and builds a web page to allow the user to buid a request. If the request did not come from IE or Netscape then generate an error to the user. If the request contains a bad format, but a request is made, then generate an error message. Otherwise, if the request is empty, then generate a FORM to allow the user to enter a request string.

All other exceptions are passed off to the parent exception manager to handle.

Parameters:
e BESException to be handled. If this method does not handle the exception then it is passed to the parent class exception_manager method to be handled.
See also:
BESException

Reimplemented from BESInterface.

Definition at line 233 of file BESApacheInterface.cc.

References BESInterface::_dhi, BES_REQUEST_INCORRECT, BESInterface::exception_manager(), BESException::get_message(), and _BESDataHandlerInterface::transmit_protocol.

Here is the call graph for this function:

void BESApacheInterface::initialize (  )  [protected, virtual]

Initialize the BES object from the apache environment.

First calls the parent initialization method in order to initialize all global variables.

Once this is completed the BESDataHandlerInterface is initialized given the BESDataRequestInterface constructed within the module code.

This includes retreiving the user information from the cookie created on the client side in the browser. The cookie name is defined in OPENDAP_USER_COOKIE above.

Also creates the BESBasicHttpTransmitter object in order to transmit the response object via http, setting the mime type and other header information for the response.

See also:
BESGlobalInit

Reimplemented from BESCmdInterface.

Definition at line 145 of file BESApacheInterface.cc.

References BESInterface::_dhi, _BESDataRequestInterface::cookie, _BESDataHandlerInterface::data, DATA_REQUEST, find_user_from_cookie(), BESCmdInterface::initialize(), BESMemoryManager::initialize_memory_pool(), _BESDataRequestInterface::request, _BESDataRequestInterface::script_name, _BESDataRequestInterface::server_address, _BESDataRequestInterface::server_name, _BESDataRequestInterface::server_port, _BESDataRequestInterface::server_protocol, BESLog::TheLog(), _BESDataRequestInterface::token, _BESDataHandlerInterface::transmit_protocol, _BESDataRequestInterface::user_address, USER_ADDRESS, _BESDataRequestInterface::user_agent, USER_NAME, and USER_TOKEN.

Here is the call graph for this function:

void BESApacheInterface::validate_data_request (  )  [protected, virtual]

Validate the information in the BESDataRequestInterface.

Reimplemented from BESCmdInterface.

Definition at line 195 of file BESApacheInterface.cc.

References _BESDataRequestInterface::request, _BESDataRequestInterface::script_name, _BESDataRequestInterface::server_address, _BESDataRequestInterface::server_name, _BESDataRequestInterface::server_port, _BESDataRequestInterface::server_protocol, _BESDataRequestInterface::user_address, and _BESDataRequestInterface::user_agent.

int BESApacheInterface::execute_request (  )  [virtual]

Override execute_request in order to register memory pool.

Once the memory pool is initialized hand over control to parent class to execute the request. Once completed, unregister the memory pool.

This needs to be done here instead of the initialization method because???

See also:
BESMemoryGlobalArea

Definition at line 82 of file BESApacheInterface.cc.

References BES_TERMINATE_IMMEDIATE, BESCmdInterface::execute_request(), BESMemoryManager::register_global_pool(), and BESMemoryManager::unregister_global_pool().

Referenced by BESApacheWrapper::call_BES().

Here is the call graph for this function:

void BESCmdInterface::build_data_request_plan (  )  [protected, virtual, inherited]

Build the data request plan using the BESCmdParser.

See also:
BESCmdParser

Reimplemented from BESInterface.

Definition at line 154 of file BESCmdInterface.cc.

References BESInterface::_dhi, BESInterface::_transmitter, BESDEBUG, _BESDataHandlerInterface::data, DATA_REQUEST, _BESDataHandlerInterface::dump(), BESReturnManager::find_transmitter(), BESDebug::GetStrm(), BESDebug::IsSet(), BESCmdParser::parse(), REQUEST_FROM, RETURN_CMD, SERVER_PID, BESLog::TheLog(), and BESReturnManager::TheManager().

Here is the call graph for this function:

void BESCmdInterface::execute_data_request_plan (  )  [protected, virtual, inherited]

Execute the data request plan.

Simply calls the parent method. Prior to calling the parent method logs a message to the dods log file.

See also:
BESLog

Reimplemented from BESInterface.

Definition at line 196 of file BESCmdInterface.cc.

References BESInterface::_dhi, _BESDataHandlerInterface::data, DATA_REQUEST, BESInterface::execute_data_request_plan(), REQUEST_FROM, SERVER_PID, and BESLog::TheLog().

Here is the call graph for this function:

void BESCmdInterface::invoke_aggregation (  )  [protected, virtual, inherited]

Invoke the aggregation server, if there is one.

Simply calls the parent method. Prior to calling the parent method logs a message to the dods log file.

See also:
BESLog

Reimplemented from BESInterface.

Definition at line 216 of file BESCmdInterface.cc.

References BESInterface::_dhi, AGG_CMD, AGG_HANDLER, _BESDataHandlerInterface::data, DATA_REQUEST, BESAggFactory::find_handler(), BESInterface::invoke_aggregation(), BESLog::is_verbose(), REQUEST_FROM, SERVER_PID, BESAggFactory::TheFactory(), and BESLog::TheLog().

Here is the call graph for this function:

void BESCmdInterface::transmit_data (  )  [protected, virtual, inherited]

Transmit the response object.

Simply calls the parent method. Prior to calling the parent method logs a message to the dods log file.

See also:
BESLog

Reimplemented from BESInterface.

Definition at line 267 of file BESCmdInterface.cc.

References BESInterface::_dhi, _BESDataHandlerInterface::data, DATA_REQUEST, REQUEST_FROM, SERVER_PID, BESLog::TheLog(), and BESInterface::transmit_data().

Here is the call graph for this function:

void BESCmdInterface::log_status (  )  [protected, virtual, inherited]

Log the status of the request to the BESLog file.

See also:
BESLog

Reimplemented from BESInterface.

Definition at line 284 of file BESCmdInterface.cc.

References BESInterface::_dhi, _BESDataHandlerInterface::data, DATA_REQUEST, _BESDataHandlerInterface::error_info, REQUEST_FROM, SERVER_PID, and BESLog::TheLog().

Here is the call graph for this function:

void BESCmdInterface::clean (  )  [protected, virtual, inherited]

Clean up after the request is completed.

Calls the parent method clean and then logs to the BESLog file saying that we are done and exiting the process. The exit actually takes place in the module code.

See also:
BESLog

Reimplemented from BESInterface.

Definition at line 307 of file BESCmdInterface.cc.

References BESInterface::_dhi, BESInterface::clean(), _BESDataHandlerInterface::data, DATA_REQUEST, REQUEST_FROM, SERVER_PID, and BESLog::TheLog().

Referenced by ~BESApacheInterface(), and BESCmdInterface::~BESCmdInterface().

Here is the call graph for this function:

int BESCmdInterface::execute_request ( const string &  from  )  [virtual, inherited]

Override execute_request in order to register memory pool.

Once the memory pool is initialized hand over control to parent class to execute the request. Once completed, unregister the memory pool.

This needs to be done here instead of the initialization method because???

Reimplemented from BESInterface.

Definition at line 85 of file BESCmdInterface.cc.

References BESInterface::execute_request().

Referenced by execute_request().

Here is the call graph for this function:

void BESCmdInterface::dump ( ostream &  strm  )  const [virtual, inherited]

dumps information about this object

Displays the pointer value of this instance

Parameters:
strm C++ i/o stream to dump the information to

Reimplemented from BESInterface.

Definition at line 326 of file BESCmdInterface.cc.

References BESInterface::dump(), BESIndent::Indent(), BESIndent::LMarg(), and BESIndent::UnIndent().

Here is the call graph for this function:

void BESInterface::report_request (  )  [protected, virtual, inherited]

Report the request and status of the request to BESReporterList::TheList().

If interested in reporting the request and status of the request then one must register a BESReporter with BESReporterList::TheList().

If no BESReporter objects are registered then nothing happens.

See also:
BESReporterList

BESReporter

Definition at line 339 of file BESInterface.cc.

References BESInterface::_dhi, BESDEBUG, DATA_REQUEST, BESReporterList::report(), and BESReporterList::TheList().

Here is the call graph for this function:

void BESInterface::end_request (  )  [protected, virtual, inherited]

End the BES request.

This method allows developers to add callbacks at the end of a request, to do any cleanup or do any extra work at the end of a request

Definition at line 359 of file BESInterface.cc.

References BESInterface::_dhi, BESDEBUG, _BESDataHandlerInterface::data, and DATA_REQUEST.

void BESInterface::add_init_callback ( p_bes_init  init  )  [static, inherited]

Definition at line 180 of file BESInterface.cc.

void BESInterface::add_end_callback ( p_bes_end  end  )  [static, inherited]

Definition at line 348 of file BESInterface.cc.


Member Data Documentation

BESDataHandlerInterface BESInterface::_dhi [protected, inherited]

Definition at line 134 of file BESInterface.h.

Referenced by BESCgiInterface::BESCgiInterface(), BESCmdInterface::BESCmdInterface(), BESInterface::BESInterface(), BESCmdInterface::build_data_request_plan(), BESCgiInterface::build_data_request_plan(), BESInterface::clean(), BESCmdInterface::clean(), BESInterface::dump(), BESInterface::end_request(), BESInterface::exception_manager(), exception_manager(), BESInterface::execute_data_request_plan(), BESCmdInterface::execute_data_request_plan(), BESInterface::execute_request(), BESInterface::initialize(), BESCmdInterface::initialize(), initialize(), BESInterface::invoke_aggregation(), BESCmdInterface::invoke_aggregation(), BESCmdInterface::log_status(), BESInterface::report_request(), BESInterface::transmit_data(), and BESCmdInterface::transmit_data().

BESTransmitter* BESInterface::_transmitter [protected, inherited]

Definition at line 135 of file BESInterface.h.

Referenced by BESCgiInterface::BESCgiInterface(), BESCmdInterface::build_data_request_plan(), BESInterface::dump(), BESCmdInterface::initialize(), BESInterface::transmit_data(), and BESCgiInterface::~BESCgiInterface().


The documentation for this class was generated from the following files:
Generated on Wed Jan 2 06:03:16 2008 for OPeNDAP Back End Server (BES) by  doxygen 1.5.4