libdap Updated for version 3.21.1
libdap4 is an implementation of OPeNDAP's DAP protocol.
|
#include <D4ResponseBuilder.h>
Public Member Functions | |
virtual void | cache_data_ddx (const string &cache_file_name, DDS &dds) |
Cache data. | |
virtual string | ce () const |
D4ResponseBuilder () | |
virtual void | dataset_constraint (ostream &out, DDS &dds, ConstraintEvaluator &eval, bool ce_eval=true) |
virtual void | dataset_constraint_ddx (ostream &out, DDS &dds, ConstraintEvaluator &eval, const string &boundary, const string &start, bool ce_eval=true) |
virtual string | dataset_name () const |
virtual void | establish_timeout (ostream &stream) const |
virtual string | get_btp_func_ce () const |
virtual DDS * | get_cached_data_ddx (const string &cache_file_name, BaseTypeFactory *factory) |
virtual bool | is_valid (const string &cache_file_name) |
virtual DDS * | read_cached_dataset (DDS &dds, ConstraintEvaluator &eval, string &cache_token) |
virtual void | read_data_from_cache (FILE *data, DDS *fdds) |
virtual void | remove_timeout () const |
virtual void | send_data (ostream &data_stream, DDS &dds, ConstraintEvaluator &eval, bool with_mime_headers=true) |
Transmit data. | |
virtual void | send_data_ddx (ostream &data_stream, DDS &dds, ConstraintEvaluator &eval, const string &start, const string &boundary, bool with_mime_headers=true) |
Transmit data. | |
virtual void | send_dds (ostream &out, DDS &dds, ConstraintEvaluator &eval, bool constrained=false, bool with_mime_headers=true) |
Transmit a DDS. | |
virtual void | send_ddx (ostream &out, DDS &dds, ConstraintEvaluator &eval, bool with_mime_headers=true) |
virtual void | set_btp_func_ce (string _ce) |
virtual void | set_ce (const string &ce) |
virtual void | set_dataset_name (const string &ds) |
void | set_mime_binary (ostream &out, ObjectType type=unknown_type, EncodingType enc=x_plain, const time_t last_modified=0, const string &protocol="") const |
void | set_mime_data_boundary (ostream &out, const string &boundary, const string &cid, const string &endian, unsigned long long len) const |
void | set_mime_ddx_boundary (ostream &out, const string &boundary, const string &start) const |
void | set_mime_error (ostream &out, int code=404, const string &reason="Dataset not found", const string &protocol="") const |
void | set_mime_html (ostream &out, ObjectType type=unknown_type, EncodingType enc=x_plain, const time_t last_modified=0, const string &protocol="") const |
void | set_mime_multipart (ostream &out, const string &boundary, const string &start, ObjectType type=unknown_type, EncodingType enc=x_plain, const time_t last_modified=0, const string &protocol="", const string &url="") const |
void | set_mime_text (ostream &out, ObjectType type=unknown_type, EncodingType enc=x_plain, const time_t last_modified=0, const string &protocol="") const |
void | set_timeout (int t=0) |
virtual void | split_ce (ConstraintEvaluator &eval, const string &expr="") |
int | timeout () const |
virtual | ~D4ResponseBuilder () |
Protected Member Functions | |
void | initialize () |
Protected Attributes | |
string | d_btp_func_ce |
Constraint expression. | |
DAPCache3 * | d_cache |
Version string for the library's default protocol version. | |
string | d_ce |
Name of the dataset/database. | |
string | d_dataset |
string | d_default_protocol |
Response timeout after N seconds. | |
int | d_timeout |
The BTP functions, extracted from the CE. | |
Friends | |
class | ResponseBuilderTest |
This class is used to build responses for/by the BES. This class replaces DODSFilter (although DODSFilter is still included in the library, its use is deprecated). and it does not have a provision for command line arguments.
Definition at line 68 of file D4ResponseBuilder.h.
|
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 89 of file D4ResponseBuilder.h.
|
virtual |
Definition at line 84 of file D4ResponseBuilder.cc.
|
virtual |
Cache data.
Write a DDS to an output stream. This method is intended to be used to write to a cache so that interim results can be reused w/o needing to be recomputed. I chose the 'data ddx' response because it combines the syntax and semantic metadata along with the data and all three DAP2 requests can be satisfied using it.
cache_file_name | Put the data here |
dds | A DDS object containing the data to be sent. |
Definition at line 1231 of file D4ResponseBuilder.cc.
|
inlinevirtual |
Get the complete constraint expression.
Definition at line 96 of file D4ResponseBuilder.h.
|
virtual |
Build/return the BLOB part of the DAP2 data response.
Definition at line 741 of file D4ResponseBuilder.cc.
|
virtual |
Build/return the DDX and the BLOB part of the DAP4 data response.
Definition at line 783 of file D4ResponseBuilder.cc.
|
inlinevirtual |
Get the dataset name - often a pathname to a file.
Definition at line 104 of file D4ResponseBuilder.h.
|
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 188 of file D4ResponseBuilder.cc.
|
inlinevirtual |
Definition at line 100 of file D4ResponseBuilder.h.
|
virtual |
Read data from cache. Allocates a new DDS using the given factory.
Definition at line 1326 of file D4ResponseBuilder.cc.
|
protected |
Called when initializing a D4ResponseBuilder that's not going to be passed command line arguments.
Definition at line 90 of file D4ResponseBuilder.cc.
|
virtual |
Is the item named by cache_entry_name valid? This code tests that the cache entry is non-zero in size (returns false if that is the case, although that might not be correct) and that the dataset associated with this ResponseBulder instance is at least as old as the cached entry.
cache_file_name | File name of the cached entry |
Definition at line 306 of file D4ResponseBuilder.cc.
|
virtual |
Get the cache DDS pointer - which will contain both attributes and data values.
dds | The DDS of the dataset referenced by the URL |
cache_token | A value-result parameter that contains the name of the file in the cache. Used to release the lock on the cached file. |
Definition at line 354 of file D4ResponseBuilder.cc.
|
virtual |
Read the data from the saved response document.
data | The input stream @parma fdds Load this DDS object with the variables, attributes and data values from the cached DDS. |
Definition at line 1280 of file D4ResponseBuilder.cc.
|
virtual |
Remove the timeout alarm.
Definition at line 203 of file D4ResponseBuilder.cc.
|
virtual |
Transmit data.
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
.
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 853 of file D4ResponseBuilder.cc.
|
virtual |
Transmit data.
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
.
FIXME!!!
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 1142 of file D4ResponseBuilder.cc.
|
virtual |
Transmit a DDS.
This function formats and prints an ASCII representation of a DDS on stdout. Either an entire DDS or a constrained DDS may be sent. This function looks in the local cache and uses a DDS object there if it's valid. Otherwise, if the request CE contains server functions that build data for the response, the resulting DDS will be cached.
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 (default) send MIME headers. |
Definition at line 606 of file D4ResponseBuilder.cc.
|
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.
FIXME!!!
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 1106 of file D4ResponseBuilder.cc.
|
inlinevirtual |
Definition at line 101 of file D4ResponseBuilder.h.
|
inlinevirtual |
Set the constraint expression to use for this response.
Definition at line 98 of file D4ResponseBuilder.h.
|
inlinevirtual |
Set the dataset name, removing any escaping except spaces
Definition at line 106 of file D4ResponseBuilder.h.
void libdap::D4ResponseBuilder::set_mime_binary | ( | ostream & | out, |
ObjectType | type = unknown_type, | ||
EncodingType | enc = x_plain, | ||
const time_t | last_modified = 0, | ||
const string & | protocol = "" ) const |
Write an HTTP 1.0 response header for our binary response document (i.e., the DataDDS object).
strm | Write the MIME header to this stream. |
type | The type of this this response. Defaults to application/octet-stream. |
ver | The version string; denotes the libdap implementation version. |
enc | How is this response encoded? Can be plain or deflate or the x_... versions of those. Default is x_plain. |
last_modified | The time to use for the Last-Modified header value. Default is zero which means use the current time. |
Definition at line 1542 of file D4ResponseBuilder.cc.
void libdap::D4ResponseBuilder::set_mime_data_boundary | ( | ostream & | out, |
const string & | boundary, | ||
const string & | cid, | ||
const string & | endian, | ||
unsigned long long | len ) const |
Definition at line 1623 of file D4ResponseBuilder.cc.
void libdap::D4ResponseBuilder::set_mime_ddx_boundary | ( | ostream & | out, |
const string & | boundary, | ||
const string & | start ) const |
Definition at line 1612 of file D4ResponseBuilder.cc.
void libdap::D4ResponseBuilder::set_mime_error | ( | ostream & | out, |
int | code = 404, | ||
const string & | reason = "Dataset not found", | ||
const string & | protocol = "" ) const |
Generate an HTTP 1.0 response header for an Error object.
strm | Write the MIME header to this stream. |
code | HTTP 1.0 response code. Should be 400, ... 500, ... |
reason | Reason string of the HTTP 1.0 response header. |
version | The version string; denotes the DAP spec and implementation version. |
Definition at line 1642 of file D4ResponseBuilder.cc.
void libdap::D4ResponseBuilder::set_mime_html | ( | ostream & | out, |
ObjectType | type = unknown_type, | ||
EncodingType | enc = x_plain, | ||
const time_t | last_modified = 0, | ||
const string & | protocol = "" ) const |
Generate an HTTP 1.0 response header for a html document.
strm | Write the MIME header to this stream. |
type | The type of this this response. |
ver | The version string; denotes the libdap implementation version. |
enc | How is this response encoded? Can be plain or deflate or the x_... versions of those. Default is x_plain. |
last_modified | The time to use for the Last-Modified header value. Default is zero which means use the current time. |
Definition at line 1495 of file D4ResponseBuilder.cc.
void libdap::D4ResponseBuilder::set_mime_multipart | ( | ostream & | out, |
const string & | boundary, | ||
const string & | start, | ||
ObjectType | type = unknown_type, | ||
EncodingType | enc = x_plain, | ||
const time_t | last_modified = 0, | ||
const string & | protocol = "", | ||
const string & | url = "" ) const |
Build the initial headers for the DAP4 data response
Definition at line 1574 of file D4ResponseBuilder.cc.
void libdap::D4ResponseBuilder::set_mime_text | ( | ostream & | out, |
ObjectType | type = unknown_type, | ||
EncodingType | enc = x_plain, | ||
const time_t | last_modified = 0, | ||
const string & | protocol = "" ) const |
Generate an HTTP 1.0 response header for a text document. This is used when returning a serialized DAS or DDS object.
strm | Write the MIME header to this stream. |
type | The type of this this response. Defaults to application/octet-stream. |
ver | The version string; denotes the libdap implementation version. |
enc | How is this response encoded? Can be plain or deflate or the x_... versions of those. Default is x_plain. |
last_modified | The time to use for the Last-Modified header value. Default is zero which means use the current time. |
Definition at line 1446 of file D4ResponseBuilder.cc.
|
inline |
Set the time out for requests in seconds. Zero means no timeout
Definition at line 109 of file D4ResponseBuilder.h.
|
virtual |
Split the CE so that the server functions that compute new values are separated into their own string and can be evaluated separately from the rest of the CE (which can contain simple and slicing projection as well as other types of function calls).
Definition at line 218 of file D4ResponseBuilder.cc.
|
inline |
Get the current request timeout value in seconds.
Definition at line 111 of file D4ResponseBuilder.h.
|
friend |
Definition at line 71 of file D4ResponseBuilder.h.
|
protected |
Constraint expression.
Definition at line 76 of file D4ResponseBuilder.h.
|
protected |
Version string for the library's default protocol version.
Definition at line 80 of file D4ResponseBuilder.h.
|
protected |
Name of the dataset/database.
Definition at line 75 of file D4ResponseBuilder.h.
|
protected |
Definition at line 74 of file D4ResponseBuilder.h.
|
protected |
Response timeout after N seconds.
Definition at line 78 of file D4ResponseBuilder.h.
|
protected |
The BTP functions, extracted from the CE.
Definition at line 77 of file D4ResponseBuilder.h.