bes  Updated for version 3.17.0
BESRequestHandler Class Reference

Represents a specific data type request handler. More...

#include <BESRequestHandler.h>

Inheritance diagram for BESRequestHandler:
Inheritance graph

Public Types

typedef map< string, p_request_handler >::const_iterator Handler_citer
 
typedef map< string, p_request_handler >::iterator Handler_iter
 

Public Member Functions

virtual bool add_handler (const string &handler_name, p_request_handler handler_method)
 add a handler method to the request handler that knows how to fill in a specific response object More...
 
 BESRequestHandler (const string &name)
 
virtual void dump (ostream &strm) const
 dumps information about this object More...
 
virtual p_request_handler find_handler (const string &handler_name)
 find the method that can handle the specified response object type More...
 
virtual string get_handler_names ()
 return a comma separated list of response object types handled by this request handler More...
 
virtual const string & get_name () const
 
virtual bool remove_handler (const string &handler_name)
 remove the specified handler method from this request handler More...
 

Detailed Description

A request handler is an object that represents a specific data type. The specific data type knows how to fill in a response object, such as a DAS, DDS, help, version, etc... response object.

The response handlers know how to build the specified response object, and the request handler knows how to fill them in.

Each container in the BESDataHandlerInterface has an associated data type for that data container, such as Cedar, NetCDF, CDF, HDF, etc... Usually, in a given request, only one data type is requested. In other words, at least currently, it is rare to see a request asking for information from more than one type of data.

Each data request handler is registered with the server. When a request comes in, the request handler is looked up for each of those data types and is passed the information it needs to fill in the specified response object.

Each request handler can handle different types of response objects. Methods are registered within the request handler for the responses that the request handler can fill in. This method is looked up and is passed the information to fill in the response object.

Definition at line 73 of file BESRequestHandler.h.

Member Function Documentation

bool BESRequestHandler::add_handler ( const string &  handler_name,
p_request_handler  handler_method 
)
virtual

Add a handler method for a specific response object to the request handler. The handler method takes a reference to a BESDataHandlerInterface and returns bool, true if the response object is filled in successfully by the method, false otherwise.

Parameters
handler_namename of the response object this method can fill in
handler_methoda function pointer to the method that can fill in the specified response object
Returns
true if the handler is added, false if it already exists
See also
BESResponseObject
BESResponseNames

Definition at line 50 of file BESRequestHandler.cc.

References find_handler().

void BESRequestHandler::dump ( ostream &  strm) const
virtual

Displays the pointer value of this instance, the name of the request handler, and the names of all registered handler functions

Parameters
strmC++ i/o stream to dump the information to

Implements BESObj.

Reimplemented in DapRequestHandler, BESDapRequestHandler, and SampleRequestHandler.

Definition at line 124 of file BESRequestHandler.cc.

p_request_handler BESRequestHandler::find_handler ( const string &  handler_name)
virtual

Find the method that can handle the specified response object type. The response object type is the same as the handler name.

Parameters
handler_namename of the method that can fill in the response object type
Returns
the method that can fill in the specified response object type
See also
BESResponseObject
BESResponseNames

Definition at line 87 of file BESRequestHandler.cc.

string BESRequestHandler::get_handler_names ( )
virtual
Returns
the comma separated list of response object types
See also
BESResponseObject
BESResponseNames

Definition at line 104 of file BESRequestHandler.cc.

bool BESRequestHandler::remove_handler ( const string &  handler_name)
virtual
Parameters
handler_namename of the method to be removed, same as the name of the response object
Returns
true if successfully removed, false if not found
See also
BESResponseNames

Definition at line 66 of file BESRequestHandler.cc.


The documentation for this class was generated from the following files: