|
void | add_var (BaseType *bt) |
| Adds a copy of the variable to the DDS. Using the ptr_duplicate() method, perform a deep copy on the variable bt and adds the result to this DDS.
|
|
void | add_var_nocopy (BaseType *bt) |
| Adds the variable to the DDS.
|
|
bool | check_semantics (bool all=false) |
| Check the semantics of each of the variables represented in the DDS.
|
|
Structure * | container () |
|
string | container_name () |
|
void | container_name (const string &cn) |
|
| DDS (BaseTypeFactory *factory, const string &name, const string &version) |
|
| DDS (BaseTypeFactory *factory, const string &name="") |
|
| DDS (const DDS &dds) |
|
void | del_var (const string &n) |
| Removes a variable from the DDS.
|
|
void | del_var (Vars_iter i) |
| Removes a variable from the DDS.
|
|
void | del_var (Vars_iter i1, Vars_iter i2) |
| Removes a range of variables from the DDS.
|
|
virtual void | dump (ostream &strm) const |
| dumps information about this object
|
|
string | filename () const |
|
void | filename (const string &fn) |
|
virtual AttrTable & | get_attr_table () |
|
int | get_dap_major () const |
| Get the DAP major version as sent by the client.
|
|
int | get_dap_minor () const |
| Get the DAP minor version as sent by the client.
|
|
string | get_dap_version () const |
|
DAS * | get_das () |
| Get a DAS object.
|
|
void | get_das (DAS *das) |
|
string | get_dataset_name () const |
|
string | get_dmr_version () const |
|
BaseTypeFactory * | get_factory () const |
|
string | get_namespace () const |
| Get the namespace associated with the DDS - likely set only by DDX responses.
|
|
int | get_request_size (bool constrained) |
| Get the estimated response size in bytes.
|
|
uint64_t | get_request_size_kb (bool constrained) |
| Get the estimated response size in kilobytes.
|
|
string | get_request_xml_base () const |
| Get the URL that will return this DDS/DDX/DataThing.
|
|
long | get_response_limit () |
| Get the maximum response size, in bytes. Zero indicates no limit.
|
|
uint64_t | get_response_limit_kb () const |
| The maximum allowed response size, in kilobytes. Zero indicates no limit (default).
|
|
BaseType * | get_var_index (int i) |
| Get a variable.
|
|
Vars_iter | get_vars_iter (int i) |
| Get an iterator.
|
|
void | insert_var (Vars_iter i, BaseType *ptr) |
| Insert a variable before the referenced element.
|
|
void | insert_var_nocopy (Vars_iter i, BaseType *ptr) |
|
bool | is_dap4_projected (std::vector< string > &inventory) |
|
bool | mark (const string &name, bool state) |
| Mark the send_p flag of the named variable to state.
|
|
void | mark_all (bool state) |
|
int | num_var () |
| Returns the number of variables in the DDS.
|
|
DDS & | operator= (const DDS &rhs) |
|
void | parse (FILE *in=stdin) |
| Parse a DDS from a file indicated by the input file descriptor. Read the persistent representation of a DDS from the FILE *in, parse it and create a matching binary object.
|
|
void | parse (int fd) |
| Parse a DDS from a file indicated by the input file descriptor.
|
|
void | parse (string fname) |
| Parse a DDS from a file with the given d_name.
|
|
void | print (FILE *out) |
| Print the entire DDS to the specified file.
|
|
void | print (ostream &out) |
| Print the entire DDS to the specified ostream.
|
|
void | print_constrained (FILE *out) |
| Print a constrained DDS to the specified file.
|
|
void | print_constrained (ostream &out) |
| Print a constrained DDS to the specified ostream.
|
|
void | print_das (ostream &out) |
| write the DAS response given the attribute information in the DDS
|
|
void | print_dmr (ostream &out, bool constrained) |
| Print the DAP4 DMR object using a DDS.
|
|
void | print_xml (FILE *out, bool constrained, const string &blob="") |
|
void | print_xml (ostream &out, bool constrained, const string &blob="") |
|
void | print_xml_writer (ostream &out, bool constrained, const string &blob="") |
|
void | set_dap_major (int p) |
|
void | set_dap_minor (int p) |
|
void | set_dap_version (const string &version_string="2.0") |
|
void | set_dap_version (double d) |
|
void | set_dataset_name (const string &n) |
|
BaseTypeFactory * | set_factory (BaseTypeFactory *factory) |
|
void | set_namespace (const string &ns) |
| Set the namespace for this DDS/DDX object/response.
|
|
void | set_request_xml_base (const string &xb) |
|
void | set_response_limit (long size) |
|
void | set_response_limit_kb (uint64_t size) |
| Set the maximum response size, in kilobytes. The size is given in kilobytes..
|
|
void | tag_nested_sequences () |
| Traverse DDS, set Sequence leaf nodes.
|
|
bool | too_big () |
|
virtual void | transfer_attributes (DAS *das) |
|
BaseType * | var (const string &n, BaseType::btp_stack &s) |
|
BaseType * | var (const string &n, BaseType::btp_stack *s=0) |
| Find the variable with the given d_name.
|
|
Vars_iter | var_begin () |
|
Vars_iter | var_end () |
| Return an iterator.
|
|
Vars_riter | var_rbegin () |
| Return a reverse iterator.
|
|
Vars_riter | var_rend () |
| Return a reverse iterator.
|
|
const vector< BaseType * > & | variables () const |
|
virtual | ~DDS () |
|
|
Old deprecated DDS timeout code - Deprecated
|
void | timeout_on () |
|
void | timeout_off () |
|
void | set_timeout (int t) |
|
int | get_timeout () |
|
The DAP2 Data Descriptor Object (DDS) is a data structure used by the DAP2 software to describe datasets and subsets of those datasets. The DDS may be thought of as the declarations for the data structures that will hold data requested by some DAP2 client. Part of the job of a DAP2 server is to build a suitable DDS for a specific dataset and to send it to the client. Depending on the data access API in use, this may involve reading part of the dataset and inferring the DDS. Other APIs may require the server simply to read some ancillary data file with the DDS in it.
On the server side, in addition to the data declarations, the DDS holds the clauses of any constraint expression that may have accompanied the data request from the DAP2 client. The DDS object includes methods for modifying the DDS according to the given constraint expression. It also has methods for directly modifying a DDS, and for transmitting it from a server to a client.
For the client, the DDS object includes methods for reading the persistent form of the object sent from a server. This includes parsing the ASCII representation of the object and, possibly, reading data received from a server into a data object.
Note that the class DDS is used to instantiate both DDS and DataDDS objects. A DDS that is empty (contains no actual data) is used by servers to send structural information to the client. The same DDS can becomes a DataDDS when data values are bound to the variables it defines.
For a complete description of the DDS layout and protocol, please refer to The OPeNDAP User Guide.
The DDS has an ASCII representation, which is what is transmitted from a DAP2 server to a client. Here is the DDS representation of an entire dataset containing a time series of worldwide grids of sea surface temperatures:
Dataset {
Float64 lat[lat = 180];
Float64 lon[lon = 360];
Float64 time[time = 404];
Grid {
ARRAY:
Int32 sst[time = 404][lat = 180][lon = 360];
MAPS:
Float64 time[time = 404];
Float64 lat[lat = 180];
Float64 lon[lon = 360];
} sst;
} weekly;
If the data request to this dataset includes a constraint expression, the corresponding DDS might be different. For example, if the request was only for northern hemisphere data at a specific time, the above DDS might be modified to appear like this:
Dataset {
Grid {
ARRAY:
Int32 sst[time = 1][lat = 90][lon = 360];
MAPS:
Float64 time[time = 1];
Float64 lat[lat = 90];
Float64 lon[lon = 360];
} sst;
} weekly;
Since the constraint has narrowed the area of interest, the range of latitude values has been halved, and there is only one time value in the returned array. Note that the simple arrays (lat
, lon
, and time
) described in the dataset are also part of the sst
Grid object. They can be requested by themselves or as part of that larger object.
See the The OPeNDAP User Guide, or the documentation of the BaseType class for descriptions of the DAP2 data types.
- Note
- Make sure to pass a valid pointer to the DDS constructor or use the set_factory() method before actually using the DDS. Also make sure that the Factory's lifetime thereafter is the same as the DDS's. Never delete the factory until you're done using the DDS.
-
Update: I removed the DEFAULT_BASETYPE_FACTORY switch because it caused more confusion than it avoided. See Trac #130. jhrg
-
The compile-time symbol DEFAULT_BASETYPE_FACTORY controls whether the old (3.4 and earlier) DDS and DataDDS constructors are supported. These constructors now use a default factory class (BaseTypeFactory, implemented by this library) to instantiate Byte, ..., Grid variables. To use the default ctor in your code you must also define this symbol. If you do choose to define this and fail to provide a specialization of BaseTypeFactory when your software needs one, you code may not link or may fail at run time. In addition to the older ctors for DDS and DataDDS, defining the symbol also makes some of the older methods in Connect available (because those methods require the older DDS and DataDDS ctors.
- See also
- BaseType
-
DAS
Definition at line 176 of file DDS.h.