OPeNDAP Hyrax Back End Server (BES)  Updated for version 3.8.3
agg_util Namespace Reference

Helper class for temporarily hijacking an existing dhi to load a DDX response for one particular file. More...

Classes

class  AggMemberDataset
 Abstract helper superclass for allowing lazy access to the DataDDS for an aggregation. More...
 
class  AggMemberDatasetDDSWrapper
 class AggMemberDatasetDDSWrapper: concrete subclass of AggMemberDataset designed to hold a weak reference to an object containing a DataDDS (DDSAccessInterface). More...
 
class  AggMemberDatasetSharedDDSWrapper
 class AggMemberDatasetSharedDDSWrapper: concrete subclass of AggMemberDataset designed to hold a ref-counted reference to an object containing a DataDDS (DDSAccessRCInterface). More...
 
class  AggMemberDatasetUsingLocationRef
 class AggMemberDatasetUsingLocationRef: Concrete subclass of AggMemberDataset for lazy-loading a location (file) if the DataDDS for the given dataset is needed. More...
 
class  AggMemberDatasetWithDimensionCacheBase
 
class  AggregationException
 Exception class used by AggregationUtil and other agg_util classes to pass generic exceptions upward into more context-specific locations. More...
 
class  AggregationUtil
 A static class for encapsulating the aggregation functionality on libdap. More...
 
class  ArrayAggregateOnOuterDimension
 class ArrayAggregateOnOuterDimension More...
 
class  ArrayAggregationBase
 Base class for subclasses of libdap::Array which perform aggregation on a list of AggMemberDatasets when asked. More...
 
struct  ArrayGetterInterface
 Helper class hierarchy for acquiring variable of a certain type from a DDS. More...
 
class  ArrayJoinExistingAggregation
 
class  BadWeakPtr
 Exception class for all errors from WeakRCPtr<T> More...
 
class  DDSAccessInterface
 Interface class for any object that can contains a DDS. More...
 
class  DDSAccessRCInterface
 Mixture interface for when we a reference-counted DDS container. More...
 
class  DDSLoader
 
struct  Dimension
 Struct for holding information about a dimension of data, minimally a name and a cardinality (size). More...
 
class  DimensionNotFoundException
 Basic information subclass for cases of dimension not found in an aggregation. More...
 
class  DimensionTable
 Container class for a table of dimensions for a given dataset. More...
 
class  DirectoryUtil
 Helper classes for using dirent.h, dir.h, stat.h, etc. More...
 
class  FileInfo
 Class to hold info on files as we get them. More...
 
class  GridAggregateOnOuterDimension
 class GridAggregateOnOuterDimension : public GridAggregationBase More...
 
class  GridAggregationBase
 
class  GridJoinExistingAggregation
 
class  RCObject
 A base class for a simple reference counted object. More...
 
class  RCObjectInterface
 Interface class for a reference counted object. More...
 
class  RCObjectPool
 A monitoring "pool" class for created RCObject's which allows us to forcibly delete any RCOBject's regardless of their ref counts when we know we are done with them, say after an exception. More...
 
class  RCPtr
 A reference to an RCObject which automatically ref() and deref() on creation and destruction. More...
 
class  SimpleTimeParser
 Helper class to parse in very simple string specifications of times and return it as an (approximate) duration in seconds. More...
 
struct  TopLevelArrayGetter
 Concrete impl that simply finds the Array by looking for a variable of the given name at the top level of the DDS (i.e. More...
 
struct  TopLevelGridDataArrayGetter
 
struct  TopLevelGridMapArrayGetter
 
class  UseCountHitZeroCB
 Interface for registering callbacks to the RCObject for when the usecount hits 0 but before the deallocate functionality is performed. More...
 
class  WeakRCPtr
 A variant of boost::weak_ptr that uses our intrusive RCObject counting. More...
 

Typedefs

typedef std::vector< RCPtr< AggMemberDataset > > AMDList
 
typedef std::set< RCObject * > RCObjectSet
 

Functions

template<class T >
void appendVectorOfRCObject (std::vector< T * > &intoVec, const std::vector< T * > &fromVec)
 Assumes T has ref() More...
 
template<class T >
void clearAndUnrefAllElements (std::vector< T * > &vecToClear)
 Assumes T has unref() More...
 
template<typename T >
void clearVectorAndDeletePointers (std::vector< T * > &vecToClear)
 For each ptr element pElt in vecToClear, delete pElt and remove it from vecToClear. More...
 
std::ostream & operator<< (std::ostream &os, const Dimension &dim)
 Dump to stream. More...
 
std::istream & operator>> (std::istream &is, Dimension &dim)
 

Detailed Description

Helper class for temporarily hijacking an existing dhi to load a DDX response for one particular file.

The dhi will hijacked at the start of the load() call and restored before the DDX is returned.

For exception safety, if this object's dtor is called while the dhi is hijacked or the response hasn't been relinquished, it will restore the dhi and clean memory, so the caller can guarantee resources will be in their original (ctor time) state if this object is destroyed via an exception stack unwind, etc.

TODO see if there's another way to load these files without hijacking an existing dhi or if we want to refer to remote BES's rather than the local. If we do this, this class will become an interface class with the various concrete subclasses for doing local vs. remote loads, etc.

Author
mjohnson m.joh.nosp@m.nson.nosp@m.@open.nosp@m.dap..nosp@m.org

Typedef Documentation

typedef std::vector< RCPtr<AggMemberDataset> > agg_util::AMDList

Definition at line 158 of file AggMemberDataset.h.

typedef std::set<RCObject*> agg_util::RCObjectSet

Definition at line 43 of file RCObject.h.

Function Documentation

template<class T >
void agg_util::appendVectorOfRCObject ( std::vector< T * > &  intoVec,
const std::vector< T * > &  fromVec 
)

Assumes T has ref()

Definition at line 521 of file AggregationUtil.h.

template<class T >
void agg_util::clearAndUnrefAllElements ( std::vector< T * > &  vecToClear)

Assumes T has unref()

Definition at line 509 of file AggregationUtil.h.

template<typename T >
void agg_util::clearVectorAndDeletePointers ( std::vector< T * > &  vecToClear)

For each ptr element pElt in vecToClear, delete pElt and remove it from vecToClear.

On exit, vecToClear.empty() and all ptrs it used to contain have been delete'd.

Parameters
vecToClear

Definition at line 497 of file AggregationUtil.h.

std::ostream & agg_util::operator<< ( std::ostream &  os,
const Dimension dim 
)

Dump to stream.

Definition at line 70 of file Dimension.cc.

References agg_util::Dimension::name, and agg_util::Dimension::size.

std::istream & agg_util::operator>> ( std::istream &  is,
Dimension dim 
)