bes Updated for version 3.21.1
The Backend Server (BES) is the lower two tiers of the Hyrax data server
|
#include <NetcdfElement.h>
Classes | |
class | VVVEntry |
Public Member Functions | |
void | addVariableToValidate (libdap::BaseType *pNewVar, VariableElement *pVE) |
VariableElement * | findVariableElementForLibdapVar (libdap::BaseType *pNewVar) |
void | removeVariableToValidate (libdap::BaseType *pVarToRemove) |
void | setVariableGotValues (libdap::BaseType *pVarToValidate) |
bool | validate () |
VariableValueValidator (NetcdfElement *pParent) | |
~VariableValueValidator () | |
Inner class for keeping track of new variables created within the context of this dataset for which we do not get <values> set up front. This should really only happen in the case of a "placeholder" array variable that acts as a coordinate variable for a joinNew aggregation where the author desires setting the metadata for the new dimension's map vector.
Callers will access this via methods in NetcdfElement.
If a new VariableElement is created and refers to a new variable but which has not had its value set by the handleEnd() of the VariableElement, it will be placed into an instance of this class (a member variable of this). The ref count of the element will be increased on addition and will be decremented when the VVV is destroyed (along with the containing NetcdfElement).
The AggregationElement processParentDatasetComplete() should inform this NetcdfElement once it sets the values on an entry in the VVV and the VVV instance will be updated to reflect that entry as having been validated.
VVV.validate() will be called in NetcdfElement::handleEnd() AFTER the aggregations have had their processParentDatasetComplete() called. If any entries in the VVV have NOT had their values set by this point, the validate will throw a parse error explaining the issue to maintain integrity of the libdap variables (and avoid cryptic internal errors much later down the line).
Definition at line 411 of file NetcdfElement.h.
ncml_module::NetcdfElement::VariableValueValidator::~VariableValueValidator | ( | ) |
Will decrement the ref count of all contained VariableElement's
void ncml_module::NetcdfElement::VariableValueValidator::addVariableToValidate | ( | libdap::BaseType * | pNewVar, |
VariableElement * | pVE ) |
Add a validation entry for the given VariableElement and the actual variable that it has created and added to the DDS. pVE->ref() will be called to make sure the element stays around after the parser has deref() it.
pNewVar | the actual libdap variable that was created and is currently in the DDS of this dataset (in _response). Should not be null. |
pVE | the VariableElement that created it. pVE->checkGotValues() will determine whether the entry has been validated. pVE->ref() will be called to up the ref count. Should not be null. |
VariableElement * ncml_module::NetcdfElement::VariableValueValidator::findVariableElementForLibdapVar | ( | libdap::BaseType * | pNewVar | ) |
If a VariableElement has been associated with a new var to validate, return it. If not, return null.
pNewVar | the libdap variable (key) to look up |
void ncml_module::NetcdfElement::VariableValueValidator::removeVariableToValidate | ( | libdap::BaseType * | pVarToRemove | ) |
Remove an entry previously added under the key pVarToRemove with addVariableToValidate. Will unref() the VariableElement portion.
pVarToRemove |
void ncml_module::NetcdfElement::VariableValueValidator::setVariableGotValues | ( | libdap::BaseType * | pVarToValidate | ) |
Lookup the VariableElement pVE associated with the given pVarToValidate and call pVE->setGotValues() on it to validate it.
pVarToValidate | a non-null variable that was entered with addVariableToValidate |
An | internal error is thrown if pVarToValidate was not already added. |
bool ncml_module::NetcdfElement::VariableValueValidator::validate | ( | ) |
Make sure all the entries has had their values set else throw a parse error explaining which variable has not so the author can fix the error. On success return true.