BESResponseHandler Class Reference

handler object that knows how to create a specific response object More...

#include <BESResponseHandler.h>

Inheritance diagram for BESResponseHandler:

Inheritance graph
[legend]
Collaboration diagram for BESResponseHandler:

Collaboration graph
[legend]

List of all members.

Public Member Functions

virtual ~BESResponseHandler (void)
virtual BESResponseObjectget_response_object ()
 return the current response object
virtual BESResponseObjectset_response_object (BESResponseObject *o)
 replaces the current response object with the specified one, returning the current response object
virtual void execute (BESDataHandlerInterface &dhi)=0
 knows how to build a requested response object
virtual void transmit (BESTransmitter *transmitter, BESDataHandlerInterface &dhi)=0
 transmit the respobse object built by the execute command using the specified transmitter object
virtual string get_name () const
 return the name of this response object
virtual void dump (ostream &strm) const
 dumps information about this object

Protected Member Functions

 BESResponseHandler (const string &name)

Protected Attributes

string _response_name
BESResponseObject_response


Detailed Description

handler object that knows how to create a specific response object

A response handler is something that knows how to create a response object, such as a DAS, DDS, DDX, informational response object. It knows how to construct the requested response object but does not necessarily fill in the response object. It does know, however, how to have other objects fill in the response object. For example, a BESDASResponseHandler knows that it needs to go to each of the request handlers (data handlers) for each of the containers requested so that those request handlers can fill in the response object. Another example is the BESHelpResponseHandler, which knows to construct an informational response object and then pass that informational response object to each registered request handler (data handler) so that each of the request handlers has an opportunity to add any help information it needs to add.

Response handlers such as the BESStatusResponseHandler (and others) are able to create the informational response object and fill it in without handing off the response object to any other object. But usually, the response handler passes the response object to another object to have it fill in the response object.

A response handler object also knows how to transmit the response object using a BESTransmitter object.

This is an abstract base class for response handlers. Derived classes implement the methods execute and transmit.

See also:
BESResponseObject

BESContainer

BESRequestHandler

BESResponseHandlerList

BESTransmitter

Definition at line 81 of file BESResponseHandler.h.


Constructor & Destructor Documentation

BESResponseHandler::BESResponseHandler ( const string &  name  )  [protected]

Definition at line 37 of file BESResponseHandler.cc.

BESResponseHandler::~BESResponseHandler ( void   )  [virtual]

Definition at line 43 of file BESResponseHandler.cc.

References _response.


Member Function Documentation

BESResponseObject * BESResponseHandler::get_response_object (  )  [virtual]

return the current response object

Returns the current response object, null if one has not yet been created. The response handler maintains ownership of the response object.

Returns:
current response object
See also:
BESResponseObject

Definition at line 53 of file BESResponseHandler.cc.

References _response.

Referenced by TestRequestHandler::cdf_build_help(), BESDapRequestHandler::dap_build_help(), BESDapRequestHandler::dap_build_version(), OPENDAP_CLASSRequestHandler::OPENDAP_TYPE_build_help(), and OPENDAP_CLASSRequestHandler::OPENDAP_TYPE_build_vers().

BESResponseObject * BESResponseHandler::set_response_object ( BESResponseObject o  )  [virtual]

replaces the current response object with the specified one, returning the current response object

This method is used to replace the response object with a new one, for example if during aggregation a new response object is built from the current response object.

The caller of set_response_object now owns the returned response object. The new response object is now owned by the response object.

Parameters:
o new response object used to replace the current one
Returns:
the response object being replaced
See also:
BESResponseObject

Definition at line 59 of file BESResponseHandler.cc.

References _response.

virtual void BESResponseHandler::execute ( BESDataHandlerInterface dhi  )  [pure virtual]

knows how to build a requested response object

Derived instances of this abstract base class know how to create a specific response object and what objects (including itself) to pass that response object to for it to be filled in.

Parameters:
dhi structure that holds request and response information
Exceptions:
BESHandlerException if there is a problem building the response object
BESResponseException upon fatal error building the response object
See also:
_BESDataHandlerInterface

BESResponseObject

Implemented in BESCatalogResponseHandler, BESDASResponseHandler, BESDataResponseHandler, BESDDSResponseHandler, BESDDXResponseHandler, BESDefineResponseHandler, BESDelContainerResponseHandler, BESDelContainersResponseHandler, BESDelDefResponseHandler, BESDelDefsResponseHandler, BESHelpResponseHandler, BESKeysResponseHandler, BESProcIdResponseHandler, BESSetContainerResponseHandler, BESSetContextResponseHandler, BESShowContainersResponseHandler, BESShowContextResponseHandler, BESShowDefsResponseHandler, BESStatusResponseHandler, BESStreamResponseHandler, BESVersionResponseHandler, TestResponseHandler, TestEhmResponseHandler, TestSigResponseHandler, and OPENDAP_RESPONSEResponseHandler.

Referenced by BESInterface::execute_data_request_plan().

virtual void BESResponseHandler::transmit ( BESTransmitter transmitter,
BESDataHandlerInterface dhi 
) [pure virtual]

transmit the respobse object built by the execute command using the specified transmitter object

Parameters:
transmitter object that knows how to transmit specific basic types
dhi structure that holds the request and response information
Exceptions:
BESTransmitException if problem transmitting the response obj
See also:
BESResponseObject

BESTransmitter

_BESDataHandlerInterface

BESTransmitException

Implemented in BESCatalogResponseHandler, BESDASResponseHandler, BESDataResponseHandler, BESDDSResponseHandler, BESDDXResponseHandler, BESDefineResponseHandler, BESDelContainerResponseHandler, BESDelContainersResponseHandler, BESDelDefResponseHandler, BESDelDefsResponseHandler, BESHelpResponseHandler, BESKeysResponseHandler, BESProcIdResponseHandler, BESSetContainerResponseHandler, BESSetContextResponseHandler, BESShowContainersResponseHandler, BESShowContextResponseHandler, BESShowDefsResponseHandler, BESStatusResponseHandler, BESStreamResponseHandler, BESVersionResponseHandler, TestResponseHandler, TestEhmResponseHandler, TestSigResponseHandler, and OPENDAP_RESPONSEResponseHandler.

Referenced by BESInterface::transmit_data().

virtual string BESResponseHandler::get_name (  )  const [inline, virtual]

return the name of this response object

This name is used to determine which response handler can handle a requested responose, such as das, dds, ddx, tab, info, version, help, etc...

Returns:
response name

Definition at line 156 of file BESResponseHandler.h.

References _response_name.

Referenced by resplistT::run().

void BESResponseHandler::dump ( ostream &  strm  )  const [virtual]

dumps information about this object

Displays the pointer value of this instance along with the name of this response handler and, if present, dumps the response object itself.

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

Implements BESObj.

Reimplemented in BESCatalogResponseHandler, BESDASResponseHandler, BESDataResponseHandler, BESDDSResponseHandler, BESDDXResponseHandler, BESDefineResponseHandler, BESDelContainerResponseHandler, BESDelContainersResponseHandler, BESDelDefResponseHandler, BESDelDefsResponseHandler, BESHelpResponseHandler, BESKeysResponseHandler, BESProcIdResponseHandler, BESSetContainerResponseHandler, BESSetContextResponseHandler, BESShowContainersResponseHandler, BESShowContextResponseHandler, BESShowDefsResponseHandler, BESStatusResponseHandler, BESStreamResponseHandler, BESVersionResponseHandler, TestEhmResponseHandler, TestSigResponseHandler, and OPENDAP_RESPONSEResponseHandler.

Definition at line 74 of file BESResponseHandler.cc.

References _response, _response_name, BESResponseObject::dump(), BESIndent::Indent(), BESIndent::LMarg(), and BESIndent::UnIndent().

Referenced by TestSigResponseHandler::dump(), TestEhmResponseHandler::dump(), OPENDAP_RESPONSEResponseHandler::dump(), BESVersionResponseHandler::dump(), BESStreamResponseHandler::dump(), BESStatusResponseHandler::dump(), BESShowDefsResponseHandler::dump(), BESShowContextResponseHandler::dump(), BESShowContainersResponseHandler::dump(), BESSetContextResponseHandler::dump(), BESSetContainerResponseHandler::dump(), BESProcIdResponseHandler::dump(), BESKeysResponseHandler::dump(), BESHelpResponseHandler::dump(), BESDelDefsResponseHandler::dump(), BESDelDefResponseHandler::dump(), BESDelContainersResponseHandler::dump(), BESDelContainerResponseHandler::dump(), BESDefineResponseHandler::dump(), BESDDXResponseHandler::dump(), BESDDSResponseHandler::dump(), BESDataResponseHandler::dump(), _BESDataHandlerInterface::dump(), BESDASResponseHandler::dump(), and BESCatalogResponseHandler::dump().

Here is the call graph for this function:


Member Data Documentation

string BESResponseHandler::_response_name [protected]

Definition at line 84 of file BESResponseHandler.h.

Referenced by dump(), BESDDXResponseHandler::execute(), and get_name().

BESResponseObject* BESResponseHandler::_response [protected]

Definition at line 85 of file BESResponseHandler.h.

Referenced by dump(), OPENDAP_RESPONSEResponseHandler::execute(), BESVersionResponseHandler::execute(), BESStreamResponseHandler::execute(), BESStatusResponseHandler::execute(), BESShowDefsResponseHandler::execute(), BESShowContextResponseHandler::execute(), BESShowContainersResponseHandler::execute(), BESSetContextResponseHandler::execute(), BESSetContainerResponseHandler::execute(), BESProcIdResponseHandler::execute(), BESKeysResponseHandler::execute(), BESHelpResponseHandler::execute(), BESDelDefsResponseHandler::execute(), BESDelDefResponseHandler::execute(), BESDelContainersResponseHandler::execute(), BESDelContainerResponseHandler::execute(), BESDefineResponseHandler::execute(), BESDDXResponseHandler::execute(), BESDDSResponseHandler::execute(), BESDataResponseHandler::execute(), BESDASResponseHandler::execute(), BESCatalogResponseHandler::execute(), get_response_object(), set_response_object(), OPENDAP_RESPONSEResponseHandler::transmit(), BESVersionResponseHandler::transmit(), BESStatusResponseHandler::transmit(), BESShowDefsResponseHandler::transmit(), BESShowContextResponseHandler::transmit(), BESShowContainersResponseHandler::transmit(), BESSetContextResponseHandler::transmit(), BESSetContainerResponseHandler::transmit(), BESProcIdResponseHandler::transmit(), BESKeysResponseHandler::transmit(), BESHelpResponseHandler::transmit(), BESDelDefsResponseHandler::transmit(), BESDelDefResponseHandler::transmit(), BESDelContainersResponseHandler::transmit(), BESDelContainerResponseHandler::transmit(), BESDefineResponseHandler::transmit(), BESDDXResponseHandler::transmit(), BESDDSResponseHandler::transmit(), BESDataResponseHandler::transmit(), BESDASResponseHandler::transmit(), BESCatalogResponseHandler::transmit(), and ~BESResponseHandler().


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