#include <DODSFilter.h>
Collaboration diagram for libdap::DODSFilter:
Public Types | |
BLOB_Response | |
DAS_Response | |
DataDDS_Response | |
DDS_Response | |
DDX_Response | |
enum | Response { Unknown_Response, DAS_Response, DDS_Response, DataDDS_Response, DDX_Response, BLOB_Response, Version_Response } |
Unknown_Response | |
Version_Response | |
Public Member Functions | |
virtual void | dataset_constraint (DDS &dds, ConstraintEvaluator &eval, FILE *out) const |
virtual void | dataset_constraint (DDS &dds, ConstraintEvaluator &eval, ostream &out) const |
DODSFilter (int argc, char *argv[]) throw (Error) | |
DODSFilter constructor. | |
DODSFilter () | |
virtual void | establish_timeout (FILE *stream) const |
virtual void | establish_timeout (ostream &stream) const |
virtual void | functional_constraint (BaseType &var, DDS &dds, ConstraintEvaluator &eval, FILE *out) const |
virtual void | functional_constraint (BaseType &var, DDS &dds, ConstraintEvaluator &eval, ostream &out) const |
virtual string | get_action () const |
virtual string | get_cache_dir () const |
Get the cache directory. | |
virtual string | get_ce () const |
Get the constraint expression. | |
virtual string | get_cgi_version () const |
virtual time_t | get_das_last_modified_time (const string &anc_location="") const |
virtual time_t | get_data_last_modified_time (const string &anc_location="") const |
virtual time_t | get_dataset_last_modified_time () const |
virtual string | get_dataset_name () const |
Get the dataset name. | |
virtual string | get_dataset_version () const |
Get the version information for the dataset. | |
virtual time_t | get_dds_last_modified_time (const string &anc_location="") const |
virtual time_t | get_request_if_modified_since () const |
virtual Response | get_response () const |
int | get_timeout () const |
virtual string | get_URL () const |
virtual bool | is_conditional () const |
Is this request conditional? | |
virtual void | print_usage () const |
Print usage information for a filter program. | |
virtual void | read_ancillary_das (DAS &das, const string &anc_location="") const |
Test if ancillary data must be read. | |
virtual void | read_ancillary_dds (DDS &dds, const string &anc_location="") const |
Test if ancillary data must be read. | |
virtual void | send_blob (DDS &dds, FILE *out, bool with_mime_headers=true) |
virtual void | send_das (FILE *out, DAS &das, const string &anc_location="", bool with_mime_headers=true) const |
Transmit a DAS. | |
virtual void | send_das (ostream &out, DAS &das, const string &anc_location="", bool with_mime_headers=true) const |
Transmit a DAS. | |
virtual void | send_das (DAS &das, const string &anc_location="", bool with_mime_headers=true) const |
virtual void | send_data (DDS &dds, ConstraintEvaluator &eval, FILE *data_stream, const string &anc_location="", bool with_mime_headers=true) const |
Transmit data. | |
virtual void | send_data (DDS &dds, ConstraintEvaluator &eval, ostream &data_stream, const string &anc_location="", bool with_mime_headers=true) const |
Transmit data. | |
virtual void | send_dds (FILE *out, DDS &dds, ConstraintEvaluator &eval, bool constrained=false, const string &anc_location="", bool with_mime_headers=true) const |
Transmit a DDS. | |
virtual void | send_dds (ostream &out, DDS &dds, ConstraintEvaluator &eval, bool constrained=false, const string &anc_location="", bool with_mime_headers=true) const |
Transmit a DDS. | |
virtual void | send_dds (DDS &dds, ConstraintEvaluator &eval, bool constrained=false, const string &anc_location="", bool with_mime_headers=true) const |
virtual void | send_ddx (DDS &dds, ConstraintEvaluator &eval, FILE *out, bool with_mime_headers=true) const |
virtual void | send_ddx (DDS &dds, ConstraintEvaluator &eval, ostream &out, bool with_mime_headers=true) const |
virtual void | send_version_info () const |
Send version information back to the client program. | |
virtual void | set_ce (string _ce) |
virtual void | set_cgi_version (string version) |
virtual void | set_dataset_name (const string _dataset) |
virtual void | set_response (const string &r) |
void | set_timeout (int timeout=0) |
virtual void | set_URL (const string &url) |
virtual | ~DODSFilter () |
Protected Member Functions | |
void | initialize (int argc, char *argv[]) |
void | initialize () |
virtual int | process_options (int argc, char *argv[]) |
Protected Attributes | |
string | d_action |
time_t | d_anc_das_lmt |
time_t | d_anc_dds_lmt |
string | d_anc_dir |
string | d_anc_file |
bool | d_bad_options |
string | d_cache_dir |
string | d_ce |
string | d_cgi_ver |
bool | d_comp |
bool | d_conditional_request |
string | d_dataset |
time_t | d_if_modified_since |
string | d_program_name |
Response | d_response |
int | d_timeout |
string | d_url |
The filter program receives a data request from the dispatch script. It receives its operating parameters from the command line, like any UNIX command, and it returns its output to standard output, which the httpd server packages up into a reply to the client.
This class contains some common functions for the filter programs used to make up the DODS data servers. The filter programs do not have to be called by a CGI program, but that is the normal mechanism by which they are invoked.
We need to rethink the ancillary file/directory stuff. I don't think it's ever been used...
Definition at line 78 of file DODSFilter.h.
Types of responses DODSFilter know about.
Unknown_Response | |
DAS_Response | |
DDS_Response | |
DataDDS_Response | |
DDX_Response | |
BLOB_Response | |
Version_Response |
Definition at line 82 of file DODSFilter.h.
libdap::DODSFilter::DODSFilter | ( | ) | [inline] |
Make an empty instance. Use the set_*() methods to load with needed values. You must call at least set_dataset_name() or be requesting version information.
Definition at line 128 of file DODSFilter.h.
References initialize().
Here is the call graph for this function:
libdap::DODSFilter::DODSFilter | ( | int | argc, | |
char * | argv[] | |||
) | throw (Error) |
Create an instance of DODSFilter using the command line arguments passed by the CGI (or other) program. The default constructor is private; this and the copy constructor (which is just the default copy constructor) are the only way to create an instance of DODSFilter.
These are the valid options:
-o
response
Specifies the type of response desired. The response is a string and must be one of DAS
, DDS
, DataDDS
or Version
. Note that Version
returns version information in the body of the response and is useful for debugging, et cetera. Each response returns version information in an HTTP header for internal use by a client.
-c
-e
expression
-v
cgi-versioncgi-version
. This is a way for the caller to set version information passed back to the client either as the response to a version request of in the response headers.
-d
ancdir
-f
ancfile
-r
cache directory
-t
timeout
-l
timeLast-Modified
time from an If-Modified-Since condition GET request. It is given in seconds since the start of the Unix epoch (Midnight, 1 Jan 1970).
Definition at line 173 of file DODSFilter.cc.
References DBG.
libdap::DODSFilter::~DODSFilter | ( | ) | [virtual] |
Definition at line 190 of file DODSFilter.cc.
void libdap::DODSFilter::dataset_constraint | ( | DDS & | dds, | |
ConstraintEvaluator & | eval, | |||
FILE * | out | |||
) | const [virtual] |
Definition at line 936 of file DODSFilter.cc.
References DBG, libdap::DDS::print_constrained(), libdap::DDS::var_begin(), and libdap::DDS::var_end().
Here is the call graph for this function:
void libdap::DODSFilter::dataset_constraint | ( | DDS & | dds, | |
ConstraintEvaluator & | eval, | |||
ostream & | out | |||
) | const [virtual] |
Definition at line 962 of file DODSFilter.cc.
References DBG, libdap::DDS::print_constrained(), libdap::DDS::var_begin(), and libdap::DDS::var_end().
Referenced by send_data().
Here is the call graph for this function:
void libdap::DODSFilter::establish_timeout | ( | FILE * | stream | ) | const [virtual] |
Use values of this instance to establish a timeout alarm for the server. If the timeout value is zero, do nothing.
Definition at line 622 of file DODSFilter.cc.
References d_timeout, libdap::SignalHandler::instance(), and libdap::SignalHandler::register_handler().
Here is the call graph for this function:
void libdap::DODSFilter::establish_timeout | ( | ostream & | stream | ) | const [virtual] |
Definition at line 637 of file DODSFilter.cc.
References d_timeout, libdap::SignalHandler::instance(), and libdap::SignalHandler::register_handler().
Referenced by send_data().
Here is the call graph for this function:
void libdap::DODSFilter::functional_constraint | ( | BaseType & | var, | |
DDS & | dds, | |||
ConstraintEvaluator & | eval, | |||
FILE * | out | |||
) | const [virtual] |
Definition at line 888 of file DODSFilter.cc.
References libdap::BaseType::print_decl(), and libdap::BaseType::serialize().
Here is the call graph for this function:
void libdap::DODSFilter::functional_constraint | ( | BaseType & | var, | |
DDS & | dds, | |||
ConstraintEvaluator & | eval, | |||
ostream & | out | |||
) | const [virtual] |
Definition at line 913 of file DODSFilter.cc.
References libdap::BaseType::print_decl(), and libdap::BaseType::serialize().
Referenced by send_data().
Here is the call graph for this function:
string libdap::DODSFilter::get_action | ( | ) | const [virtual] |
Get the string name of the response to be returned.
Definition at line 451 of file DODSFilter.cc.
References d_action.
string libdap::DODSFilter::get_cache_dir | ( | ) | const [virtual] |
The cache_dir
is used to hold the cached .dds and .das files. By default, this returns an empty string (store cache files in current directory.
Definition at line 587 of file DODSFilter.cc.
References d_cache_dir.
string libdap::DODSFilter::get_ce | ( | ) | const [virtual] |
Return the entire constraint expression in a string. This includes both the projection and selection clauses, but not the question mark.
Definition at line 347 of file DODSFilter.cc.
References d_ce.
string libdap::DODSFilter::get_cgi_version | ( | ) | const [virtual] |
Return the version information passed to the instance when it was created. This string is passed to the DODSFilter ctor using the -v option.
Definition at line 335 of file DODSFilter.cc.
References d_cgi_ver.
time_t libdap::DODSFilter::get_das_last_modified_time | ( | const string & | anc_location = "" |
) | const [virtual] |
Get the last modified time for the dataset's DAS. This time, given in seconds since the epoch (1 Jan 1970 00:00:00 GMT), is the greater of the datasets's and any ancillary DAS' last modified time.
anc_location | A directory to search for ancillary files (in addition to the CWD). |
Definition at line 492 of file DODSFilter.cc.
References d_anc_dir, d_anc_file, d_dataset, DBG, libdap::Ancillary::find_ancillary_file(), get_dataset_last_modified_time(), and libdap::last_modified_time().
Referenced by send_das().
Here is the call graph for this function:
time_t libdap::DODSFilter::get_data_last_modified_time | ( | const string & | anc_location = "" |
) | const [virtual] |
Get the last modified time to be used for a particular data request. This method should look at both the constraint expression and any ancillary files for this dataset. The implementation provided here returns the latest time returned by the get_dataset
...(), get_das
...() and get_dds
...() methods and does not currently check the CE.
anc_location | A directory to search for ancillary files (in addition to the CWD). |
Definition at line 544 of file DODSFilter.cc.
References d_anc_dir, d_anc_file, d_dataset, DBG, libdap::Ancillary::find_ancillary_file(), get_dataset_last_modified_time(), and libdap::last_modified_time().
Referenced by send_blob(), and send_data().
Here is the call graph for this function:
time_t libdap::DODSFilter::get_dataset_last_modified_time | ( | ) | const [virtual] |
Get the dataset's last modified time. This returns the time at which the dataset was last modified as defined by UNIX's notion of modification. This does not take into account the modification of an ancillary DAS or DDS. Time is given in seconds since the epoch (1 Jan 1970 00:00:00 GMT).
This method perform a simple check on the file named by the dataset given when the DODSFilter instance was created. If the dataset is not a filter, this method returns the current time. Servers which provide access to non-file-based data should subclass DODSFilter and supply a more suitable version of this method.
From the stat(2) man page: ``Traditionally, st_mtime
is changed by mknod(2), utime(2), and write(2). The st_mtime
is not changed for changes in owner, group, hard link count, or mode.''
Definition at line 477 of file DODSFilter.cc.
References d_dataset, and libdap::last_modified_time().
Referenced by get_das_last_modified_time(), get_data_last_modified_time(), and get_dds_last_modified_time().
Here is the call graph for this function:
string libdap::DODSFilter::get_dataset_name | ( | ) | const [virtual] |
The ``dataset name'' is the filename or other string that the filter program will use to access the data. In some cases this will indicate a disk file containing the data. In others, it may represent a database query or some other exotic data access method.
Definition at line 367 of file DODSFilter.cc.
References d_dataset.
string libdap::DODSFilter::get_dataset_version | ( | ) | const [virtual] |
To read version information that is specific to a certain dataset, override this method with an implementation that does what you want. By default, this returns an empty string.
Definition at line 406 of file DODSFilter.cc.
Referenced by send_version_info().
time_t libdap::DODSFilter::get_dds_last_modified_time | ( | const string & | anc_location = "" |
) | const [virtual] |
Get the last modified time for the dataset's DDS. This time, given in seconds since the epoch (1 Jan 1970 00:00:00 GMT), is the greater of the datasets's and any ancillary DDS' last modified time.
Definition at line 515 of file DODSFilter.cc.
References d_anc_dir, d_anc_file, d_dataset, DBG, libdap::Ancillary::find_ancillary_file(), get_dataset_last_modified_time(), and libdap::last_modified_time().
Referenced by send_dds(), and send_ddx().
Here is the call graph for this function:
time_t libdap::DODSFilter::get_request_if_modified_since | ( | ) | const [virtual] |
Get the value of a conditional request's If-Modified-Since header. This value is used to determine if the request should get a full response or a Not Modified (304) response. The time is given in seconds since the Unix epoch (midnight, 1 Jan 1970). If no time was given with the request, this methods returns -1.
Definition at line 575 of file DODSFilter.cc.
References d_if_modified_since.
Referenced by send_blob(), send_das(), send_data(), send_dds(), and send_ddx().
DODSFilter::Response libdap::DODSFilter::get_response | ( | ) | const [virtual] |
Get the enum name of the response to be returned.
Definition at line 445 of file DODSFilter.cc.
References d_response.
Referenced by initialize().
int libdap::DODSFilter::get_timeout | ( | ) | const |
string libdap::DODSFilter::get_URL | ( | ) | const [virtual] |
Get the URL. This returns the URL, minus the constraint originally sent to the server.
Definition at line 382 of file DODSFilter.cc.
References d_url.
void libdap::DODSFilter::initialize | ( | int | argc, | |
char * | argv[] | |||
) | [protected] |
Initialize. Specializations can call this once an empty DODSFilter has been created using the default constructor. Using a method such as this provides a way to specialize the process_options() method and then have that specialization called by the subclass' constructor.
This class and any class that specializes it should call this method in its constructor. Note that when this method is called, the object is not fully constructed.
argc | The argument count | |
argv | The vector of char * argument strings. |
Definition at line 238 of file DODSFilter.cc.
References d_dataset, d_program_name, get_response(), initialize(), print_usage(), process_options(), Version_Response, and libdap::www2id().
Here is the call graph for this function:
void libdap::DODSFilter::initialize | ( | ) | [protected] |
Called when initializing a DODSFilter that's not going to be passed a command line arguments.
Definition at line 197 of file DODSFilter.cc.
References d_anc_das_lmt, d_anc_dds_lmt, d_anc_dir, d_anc_file, d_bad_options, d_cache_dir, d_ce, d_cgi_ver, d_comp, d_conditional_request, d_dataset, d_if_modified_since, d_program_name, d_response, d_timeout, d_url, and Unknown_Response.
Referenced by DODSFilter(), and initialize().
bool libdap::DODSFilter::is_conditional | ( | ) | const [virtual] |
Definition at line 305 of file DODSFilter.cc.
References d_conditional_request.
Referenced by send_blob(), send_das(), send_data(), send_dds(), and send_ddx().
void libdap::DODSFilter::print_usage | ( | ) | const [virtual] |
This message is printed when the filter program is incorrectly invoked by the dispatch CGI. This is an error in the server installation or the CGI implementation, so the error message is written to stderr instead of stdout. A server's stderr messages show up in the httpd log file. In addition, an error object is sent back to the client program telling them that the server is broken.
Definition at line 696 of file DODSFilter.cc.
References libdap::ErrMsgT(), unknown_error, and libdap::usage.
Referenced by initialize(), process_options(), set_response(), and set_URL().
Here is the call graph for this function:
int libdap::DODSFilter::process_options | ( | int | argc, | |
char * | argv[] | |||
) | [protected, virtual] |
Processing the command line options passed to the filter is handled by this method so that specializations can change the options easily.
argc | The argument count | |
argv | The vector of char * argument strings. |
Definition at line 267 of file DODSFilter.cc.
References d_anc_dir, d_anc_file, d_cache_dir, d_comp, d_conditional_request, d_if_modified_since, d_timeout, DBG, DBGN, print_usage(), set_ce(), set_cgi_version(), set_response(), and set_URL().
Referenced by initialize().
Here is the call graph for this function:
void libdap::DODSFilter::read_ancillary_das | ( | DAS & | das, | |
const string & | anc_location = "" | |||
) | const [virtual] |
Read the ancillary DAS information and merge it into the input DAS object.
das | A DAS object that will be augmented with the ancillary data attributes. | |
anc_location | The directory in which the external DAS file resides. |
Definition at line 660 of file DODSFilter.cc.
References d_anc_dir, d_anc_file, d_dataset, and libdap::Ancillary::read_ancillary_das().
Here is the call graph for this function:
void libdap::DODSFilter::read_ancillary_dds | ( | DDS & | dds, | |
const string & | anc_location = "" | |||
) | const [virtual] |
Read the ancillary DDS information and merge it into the input DDS object.
dds | A DDS object that will be augmented with the ancillary data properties. | |
anc_location | The directory in which the external DAS file resides. |
Definition at line 677 of file DODSFilter.cc.
References d_anc_dir, d_anc_file, d_dataset, and libdap::Ancillary::read_ancillary_dds().
Here is the call graph for this function:
void libdap::DODSFilter::send_blob | ( | DDS & | dds, | |
FILE * | out, | |||
bool | with_mime_headers = true | |||
) | [virtual] |
Write the BLOB response to the client.
dds | Use the variables in this DDS to generate the BLOB response. | |
out | Dump the response to this FILE pointer. | |
with_mime_headers | If true (the default) send MIME headers. |
Definition at line 1256 of file DODSFilter.cc.
References d_anc_dir, d_ce, d_cgi_ver, d_comp, d_dataset, libdap::deflate, libdap::deflate_exists(), libdap::dods_data, get_data_last_modified_time(), get_request_if_modified_since(), is_conditional(), libdap::set_mime_binary(), libdap::set_mime_not_modified(), and libdap::x_plain.
Here is the call graph for this function:
void libdap::DODSFilter::send_das | ( | FILE * | out, | |
DAS & | das, | |||
const string & | anc_location = "" , |
|||
bool | with_mime_headers = true | |||
) | const [virtual] |
This function formats and prints an ASCII representation of a DAS on stdout. This has the effect of sending the DAS object back to the client program.
out | The output FILE to which the DAS is to be sent. | |
das | The DAS object to be sent. | |
anc_location | The directory in which the external DAS file resides. | |
with_mime_headers | If true (the default) send MIME headers. |
Definition at line 728 of file DODSFilter.cc.
References d_cgi_ver, libdap::dods_das, get_das_last_modified_time(), get_request_if_modified_since(), is_conditional(), libdap::DAS::print(), libdap::set_mime_not_modified(), libdap::set_mime_text(), and libdap::x_plain.
Here is the call graph for this function:
void libdap::DODSFilter::send_das | ( | ostream & | out, | |
DAS & | das, | |||
const string & | anc_location = "" , |
|||
bool | with_mime_headers = true | |||
) | const [virtual] |
This function formats and prints an ASCII representation of a DAS on stdout. This has the effect of sending the DAS object back to the client program.
out | The output stream to which the DAS is to be sent. | |
das | The DAS object to be sent. | |
anc_location | The directory in which the external DAS file resides. | |
with_mime_headers | If true (the default) send MIME headers. |
Definition at line 757 of file DODSFilter.cc.
References d_cgi_ver, libdap::dods_das, get_das_last_modified_time(), get_request_if_modified_since(), is_conditional(), libdap::DAS::print(), libdap::set_mime_not_modified(), libdap::set_mime_text(), and libdap::x_plain.
Here is the call graph for this function:
void libdap::DODSFilter::send_das | ( | DAS & | das, | |
const string & | anc_location = "" , |
|||
bool | with_mime_headers = true | |||
) | const [virtual] |
Definition at line 775 of file DODSFilter.cc.
void libdap::DODSFilter::send_data | ( | DDS & | dds, | |
ConstraintEvaluator & | eval, | |||
FILE * | data_stream, | |||
const string & | anc_location = "" , |
|||
bool | with_mime_headers = true | |||
) | const [virtual] |
Send the data in the DDS object back to the client program. The data is encoded using a Marshaller, and enclosed in a MIME document which is all sent to data_stream
. If this is being called from a CGI, data_stream
is probably stdout
and writing to it has the effect of sending the response back to the client.
dds | A DDS object containing the data to be sent. | |
eval | A reference to the ConstraintEvaluator to use. | |
data_stream | Write the response to this FILE. | |
anc_location | A directory to search for ancillary files (in addition to the CWD). This is used in a call to get_data_last_modified_time(). | |
with_mime_headers | If true, include the MIME headers in the response. Defaults to true. |
Definition at line 1003 of file DODSFilter.cc.
References libdap::compressor(), d_ce, d_cgi_ver, d_comp, d_dataset, d_timeout, dataset_constraint(), libdap::deflate, libdap::deflate_exists(), libdap::dods_data, establish_timeout(), libdap::ConstraintEvaluator::eval_function(), functional_constraint(), libdap::ConstraintEvaluator::functional_expression(), get_data_last_modified_time(), get_request_if_modified_since(), is_conditional(), libdap::ConstraintEvaluator::parse_constraint(), libdap::set_mime_binary(), libdap::set_mime_not_modified(), libdap::DDS::set_timeout(), libdap::DDS::tag_nested_sequences(), unknown_error, and libdap::x_plain.
Here is the call graph for this function:
void libdap::DODSFilter::send_data | ( | DDS & | dds, | |
ConstraintEvaluator & | eval, | |||
ostream & | data_stream, | |||
const string & | anc_location = "" , |
|||
bool | with_mime_headers = true | |||
) | const [virtual] |
Send the data in the DDS object back to the client program. The data is encoded using a Marshaller, and enclosed in a MIME document which is all sent to data_stream
. If this is being called from a CGI, data_stream
is probably stdout
and writing to it has the effect of sending the response back to the client.
dds | A DDS object containing the data to be sent. | |
eval | A reference to the ConstraintEvaluator to use. | |
data_stream | Write the response to this stream. | |
anc_location | A directory to search for ancillary files (in addition to the CWD). This is used in a call to get_data_last_modified_time(). | |
with_mime_headers | If true, include the MIME headers in the response. Defaults to true. |
Definition at line 1097 of file DODSFilter.cc.
References libdap::compressor(), d_ce, d_cgi_ver, d_comp, d_dataset, d_timeout, dataset_constraint(), libdap::deflate, libdap::deflate_exists(), libdap::dods_data, establish_timeout(), libdap::ConstraintEvaluator::eval_function(), functional_constraint(), libdap::ConstraintEvaluator::functional_expression(), get_data_last_modified_time(), get_request_if_modified_since(), is_conditional(), libdap::ConstraintEvaluator::parse_constraint(), libdap::set_mime_binary(), libdap::set_mime_not_modified(), libdap::DDS::set_timeout(), libdap::DDS::tag_nested_sequences(), unknown_error, and libdap::x_plain.
Here is the call graph for this function:
void libdap::DODSFilter::send_dds | ( | FILE * | out, | |
DDS & | dds, | |||
ConstraintEvaluator & | eval, | |||
bool | constrained = false , |
|||
const string & | anc_location = "" , |
|||
bool | with_mime_headers = true | |||
) | const [virtual] |
This function formats and prints an ASCII representation of a DDS on stdout. When called by a CGI program, this has the effect of sending a DDS object back to the client program. Either an entire DDS or a constrained DDS may be sent.
out | The output FILE to which the DAS is to be sent. | |
dds | The DDS to send back to a client. | |
eval | A reference to the ConstraintEvaluator to use. | |
constrained | If this argument is true, evaluate the current constraint expression and send the `constrained DDS' back to the client. | |
anc_location | The directory in which the external DAS file resides. | |
with_mime_headers | If true (the default) send MIME headers. |
Definition at line 799 of file DODSFilter.cc.
References d_ce, d_cgi_ver, libdap::dods_dds, libdap::ConstraintEvaluator::functional_expression(), get_dds_last_modified_time(), get_request_if_modified_since(), is_conditional(), libdap::ConstraintEvaluator::parse_constraint(), libdap::DDS::print(), libdap::DDS::print_constrained(), libdap::set_mime_not_modified(), libdap::set_mime_text(), and libdap::x_plain.
Here is the call graph for this function:
void libdap::DODSFilter::send_dds | ( | ostream & | out, | |
DDS & | dds, | |||
ConstraintEvaluator & | eval, | |||
bool | constrained = false , |
|||
const string & | anc_location = "" , |
|||
bool | with_mime_headers = true | |||
) | const [virtual] |
This function formats and prints an ASCII representation of a DDS on stdout. When called by a CGI program, this has the effect of sending a DDS object back to the client program. Either an entire DDS or a constrained DDS may be sent.
out | The output stream to which the DAS is to be sent. | |
dds | The DDS to send back to a client. | |
eval | A reference to the ConstraintEvaluator to use. | |
constrained | If this argument is true, evaluate the current constraint expression and send the `constrained DDS' back to the client. | |
anc_location | The directory in which the external DAS file resides. | |
with_mime_headers | If true (the default) send MIME headers. |
Definition at line 846 of file DODSFilter.cc.
References d_ce, d_cgi_ver, libdap::dods_dds, libdap::ConstraintEvaluator::functional_expression(), get_dds_last_modified_time(), get_request_if_modified_since(), is_conditional(), libdap::ConstraintEvaluator::parse_constraint(), libdap::DDS::print(), libdap::DDS::print_constrained(), libdap::set_mime_not_modified(), libdap::set_mime_text(), and libdap::x_plain.
Here is the call graph for this function:
void libdap::DODSFilter::send_dds | ( | DDS & | dds, | |
ConstraintEvaluator & | eval, | |||
bool | constrained = false , |
|||
const string & | anc_location = "" , |
|||
bool | with_mime_headers = true | |||
) | const [virtual] |
Definition at line 877 of file DODSFilter.cc.
void libdap::DODSFilter::send_ddx | ( | DDS & | dds, | |
ConstraintEvaluator & | eval, | |||
FILE * | out, | |||
bool | with_mime_headers = true | |||
) | const [virtual] |
Send the DDX response. The DDX never contains data, instead it holds a reference to a Blob response which is used to get the data values. The DDS and DAS objects are built using code that already exists in the servers.
dds | The dataset's DDS with attributes in the variables. | |
eval | A reference to the ConstraintEvaluator to use. | |
out | Destination | |
with_mime_headers | If true, include the MIME headers in the response. Defaults to true. |
Definition at line 1186 of file DODSFilter.cc.
References d_anc_dir, d_ce, d_cgi_ver, d_url, libdap::dap4_ddx, libdap::ConstraintEvaluator::functional_expression(), get_dds_last_modified_time(), get_request_if_modified_since(), is_conditional(), libdap::ConstraintEvaluator::parse_constraint(), libdap::DDS::print_xml(), libdap::set_mime_not_modified(), libdap::set_mime_text(), and libdap::x_plain.
Here is the call graph for this function:
void libdap::DODSFilter::send_ddx | ( | DDS & | dds, | |
ConstraintEvaluator & | eval, | |||
ostream & | out, | |||
bool | with_mime_headers = true | |||
) | const [virtual] |
Send the DDX response. The DDX never contains data, instead it holds a reference to a Blob response which is used to get the data values. The DDS and DAS objects are built using code that already exists in the servers.
dds | The dataset's DDS with attributes in the variables. | |
eval | A reference to the ConstraintEvaluator to use. | |
out | Destination | |
with_mime_headers | If true, include the MIME headers in the response. Defaults to true. |
Definition at line 1224 of file DODSFilter.cc.
References d_anc_dir, d_ce, d_cgi_ver, d_url, libdap::dap4_ddx, libdap::ConstraintEvaluator::functional_expression(), get_dds_last_modified_time(), get_request_if_modified_since(), is_conditional(), libdap::ConstraintEvaluator::parse_constraint(), libdap::DDS::print_xml(), libdap::set_mime_not_modified(), libdap::set_mime_text(), and libdap::x_plain.
Here is the call graph for this function:
void libdap::DODSFilter::send_version_info | ( | ) | const [virtual] |
This function formats and sends to stdout version information from the httpd server, the server dispatch scripts, the DODS core software, and (optionally) the dataset.
Definition at line 710 of file DODSFilter.cc.
References d_cgi_ver, libdap::do_version(), and get_dataset_version().
Here is the call graph for this function:
void libdap::DODSFilter::set_ce | ( | string | _ce | ) | [virtual] |
Definition at line 353 of file DODSFilter.cc.
References d_ce, and libdap::www2id().
Referenced by process_options().
Here is the call graph for this function:
void libdap::DODSFilter::set_cgi_version | ( | string | version | ) | [virtual] |
Set the CGI/Server version number. Servers use this when answering requests for version information. The version `number' should include both the name of the server (e.g., ff_dods
) as well as the version number. Since this information is typically divined by configure, it's up to the executable to poke the correct value in using this method.
Note that the -v switch that this class understands is deprecated since it is usually called by Perl code. It makes more sense to have the actual C++ software set the version string.
version | A version string for this server. |
Definition at line 324 of file DODSFilter.cc.
References d_cgi_ver.
Referenced by process_options().
void libdap::DODSFilter::set_dataset_name | ( | const string | _dataset | ) | [virtual] |
Definition at line 373 of file DODSFilter.cc.
References d_dataset, and libdap::www2id().
Here is the call graph for this function:
void libdap::DODSFilter::set_response | ( | const string & | r | ) | [virtual] |
Set the response to be returned. Valid response names are "DAS", "DDS", "DataDDS, "Version".
r | The name of the object. |
InternalErr | Thrown if the response is not one of the valid names. |
Definition at line 417 of file DODSFilter.cc.
References d_action, d_response, DAS_Response, DataDDS_Response, DDS_Response, DDX_Response, print_usage(), and Version_Response.
Referenced by process_options().
Here is the call graph for this function:
void libdap::DODSFilter::set_timeout | ( | int | t = 0 |
) |
Set the server's timeout value. A value of zero (the default) means no timeout.
t | Server timeout in seconds. Default is zero (no timeout). |
Definition at line 597 of file DODSFilter.cc.
References d_timeout.
void libdap::DODSFilter::set_URL | ( | const string & | url | ) | [virtual] |
Set the URL. Set the URL sent to the server.
url | The URL, minus the constraint. |
Definition at line 390 of file DODSFilter.cc.
References d_url, and print_usage().
Referenced by process_options().
Here is the call graph for this function:
string libdap::DODSFilter::d_action [protected] |
time_t libdap::DODSFilter::d_anc_das_lmt [protected] |
time_t libdap::DODSFilter::d_anc_dds_lmt [protected] |
string libdap::DODSFilter::d_anc_dir [protected] |
Definition at line 101 of file DODSFilter.h.
Referenced by get_das_last_modified_time(), get_data_last_modified_time(), get_dds_last_modified_time(), initialize(), process_options(), read_ancillary_das(), read_ancillary_dds(), send_blob(), and send_ddx().
string libdap::DODSFilter::d_anc_file [protected] |
Definition at line 102 of file DODSFilter.h.
Referenced by get_das_last_modified_time(), get_data_last_modified_time(), get_dds_last_modified_time(), initialize(), process_options(), read_ancillary_das(), and read_ancillary_dds().
bool libdap::DODSFilter::d_bad_options [protected] |
string libdap::DODSFilter::d_cache_dir [protected] |
Definition at line 103 of file DODSFilter.h.
Referenced by get_cache_dir(), initialize(), and process_options().
string libdap::DODSFilter::d_ce [protected] |
Definition at line 99 of file DODSFilter.h.
Referenced by get_ce(), initialize(), send_blob(), send_data(), send_dds(), send_ddx(), and set_ce().
string libdap::DODSFilter::d_cgi_ver [protected] |
Definition at line 100 of file DODSFilter.h.
Referenced by get_cgi_version(), initialize(), send_blob(), send_das(), send_data(), send_dds(), send_ddx(), send_version_info(), and set_cgi_version().
bool libdap::DODSFilter::d_comp [protected] |
Definition at line 93 of file DODSFilter.h.
Referenced by initialize(), process_options(), send_blob(), and send_data().
bool libdap::DODSFilter::d_conditional_request [protected] |
Definition at line 95 of file DODSFilter.h.
Referenced by initialize(), is_conditional(), and process_options().
string libdap::DODSFilter::d_dataset [protected] |
Definition at line 98 of file DODSFilter.h.
Referenced by get_das_last_modified_time(), get_data_last_modified_time(), get_dataset_last_modified_time(), get_dataset_name(), get_dds_last_modified_time(), initialize(), read_ancillary_das(), read_ancillary_dds(), send_blob(), send_data(), and set_dataset_name().
time_t libdap::DODSFilter::d_if_modified_since [protected] |
Definition at line 113 of file DODSFilter.h.
Referenced by get_request_if_modified_since(), initialize(), and process_options().
string libdap::DODSFilter::d_program_name [protected] |
Response libdap::DODSFilter::d_response [protected] |
Definition at line 106 of file DODSFilter.h.
Referenced by get_response(), initialize(), and set_response().
int libdap::DODSFilter::d_timeout [protected] |
Definition at line 109 of file DODSFilter.h.
Referenced by establish_timeout(), get_timeout(), initialize(), process_options(), send_data(), and set_timeout().
string libdap::DODSFilter::d_url [protected] |
Definition at line 104 of file DODSFilter.h.
Referenced by get_URL(), initialize(), send_ddx(), and set_URL().