OPeNDAP Hyrax Back End Server (BES)  Updated for version 3.8.3
agg_util::AggMemberDatasetSharedDDSWrapper Class Reference

class AggMemberDatasetSharedDDSWrapper: concrete subclass of AggMemberDataset designed to hold a ref-counted reference to an object containing a DataDDS (DDSAccessRCInterface). More...

#include <AggMemberDatasetSharedDDSWrapper.h>

Inheritance diagram for agg_util::AggMemberDatasetSharedDDSWrapper:
Inheritance graph
Collaboration diagram for agg_util::AggMemberDatasetSharedDDSWrapper:
Collaboration graph

Public Member Functions

void addPreDeleteCB (UseCountHitZeroCB *pCB)
 Add uniquely. More...
 
 AggMemberDatasetSharedDDSWrapper ()
 
 AggMemberDatasetSharedDDSWrapper (const DDSAccessRCInterface *pDDSHolder)
 
 AggMemberDatasetSharedDDSWrapper (const AggMemberDatasetSharedDDSWrapper &proto)
 
virtual void fillDimensionCacheByUsingDataDDS ()
 Uses the getDataDDS() call in order to find all named dimensions within it and to seed them into the dimension cache table for faster later lookups. More...
 
virtual void flushDimensionCache ()
 Flush out any cache for the Dimensions so that it will have to be loaded. More...
 
virtual unsigned int getCachedDimensionSize (const std::string &dimName) const
 Get the size of the given dimension named dimName cached within the dataset. More...
 
virtual const libdap::DataDDS * getDataDDS ()
 Access via the wrapped DDSAccessRCInterface. More...
 
const std::string & getLocation () const
 The location to which the AggMemberDataset refers Note: this could be "" for some subclasses if they are virtual or nested. More...
 
virtual int getRefCount () const
 Get the current reference count. More...
 
virtual bool isDimensionCached (const std::string &dimName) const
 Return whether the dimension is already cached, or would have to be loaded to be found. More...
 
virtual void loadDimensionCache (std::istream &istr)
 Load the values in the dimension cache from the input stream. More...
 
AggMemberDatasetSharedDDSWrapperoperator= (const AggMemberDatasetSharedDDSWrapper &that)
 
virtual int ref () const
 Increase the reference count by one. More...
 
virtual void removeFromPool () const
 If the object is in an auto-delete pool, remove it from the pool and force it to only delete when it's ref count goes to 0. More...
 
void removePreDeleteCB (UseCountHitZeroCB *pCB)
 Remove it exists. More...
 
virtual void saveDimensionCache (std::ostream &ostr)
 Append the values in the dimension cache to the output stream. More...
 
virtual void setDimensionCacheFor (const Dimension &dim, bool throwIfFound)
 Seed the dimension cache using the given dimension, so that later calls to getDimensionSize for dim.name will return the dim.size immediately without checking or loading the actual DDS. More...
 
virtual std::string toString () const
 Just prints the count and address. More...
 
virtual int unref () const throw ()
 Decrease the reference count by one. More...
 
virtual ~AggMemberDatasetSharedDDSWrapper ()
 

Detailed Description

class AggMemberDatasetSharedDDSWrapper: concrete subclass of AggMemberDataset designed to hold a ref-counted reference to an object containing a DataDDS (DDSAccessRCInterface).

This allows an object containing an aggregated DDS (DDSAccessRCInterface) to exist outside of its normal scope by letting the wrapper hold a strong (counted) reference to it until the aggregation serialization is complete.

The wrapped DDSAccessRCInterface will be ref() upon construction or being added into this by assignment or copy construction and will be unref() upon destruction or loss of reference via assignment operator.

Definition at line 54 of file AggMemberDatasetSharedDDSWrapper.h.

Constructor & Destructor Documentation

agg_util::AggMemberDatasetSharedDDSWrapper::AggMemberDatasetSharedDDSWrapper ( )

Definition at line 37 of file AggMemberDatasetSharedDDSWrapper.cc.

agg_util::AggMemberDatasetSharedDDSWrapper::AggMemberDatasetSharedDDSWrapper ( const DDSAccessRCInterface pDDSHolder)

Definition at line 43 of file AggMemberDatasetSharedDDSWrapper.cc.

References agg_util::RCObjectInterface::ref().

Here is the call graph for this function:

agg_util::AggMemberDatasetSharedDDSWrapper::~AggMemberDatasetSharedDDSWrapper ( )
virtual

Definition at line 53 of file AggMemberDatasetSharedDDSWrapper.cc.

References BESDEBUG.

agg_util::AggMemberDatasetSharedDDSWrapper::AggMemberDatasetSharedDDSWrapper ( const AggMemberDatasetSharedDDSWrapper proto)

Definition at line 59 of file AggMemberDatasetSharedDDSWrapper.cc.

Member Function Documentation

void agg_util::RCObject::addPreDeleteCB ( UseCountHitZeroCB pCB)
inherited

Add uniquely.

If it is added agan, the second time is ignored.

Definition at line 145 of file RCObject.cc.

References BESDEBUG.

void agg_util::AggMemberDatasetWithDimensionCacheBase::fillDimensionCacheByUsingDataDDS ( )
virtualinherited

Uses the getDataDDS() call in order to find all named dimensions within it and to seed them into the dimension cache table for faster later lookups.

Potentially slow!

Implements agg_util::AggMemberDataset.

Definition at line 153 of file AggMemberDatasetWithDimensionCacheBase.cc.

References agg_util::AggMemberDataset::getDataDDS(), and VALID_PTR.

Here is the call graph for this function:

void agg_util::AggMemberDatasetWithDimensionCacheBase::flushDimensionCache ( )
virtualinherited

Flush out any cache for the Dimensions so that it will have to be loaded.

Implements agg_util::AggMemberDataset.

Definition at line 172 of file AggMemberDatasetWithDimensionCacheBase.cc.

unsigned int agg_util::AggMemberDatasetWithDimensionCacheBase::getCachedDimensionSize ( const std::string &  dimName) const
virtualinherited

Get the size of the given dimension named dimName cached within the dataset.

If not found in cache, throws.

If a cached value exists from a prior load of the DataDDS using loadDimensionCacheFromDataDDS() or from a call to setDimensionCacheFor(), return that.

Otherwise, this must load the DataDDS to get the values.

Implementation is left up to subclasses for efficiency.

Returns
the size of the dimension if found
Exceptions
agg_util::DimensionNotFoundExceptionif not located via any means.

Implements agg_util::AggMemberDataset.

Definition at line 92 of file AggMemberDatasetWithDimensionCacheBase.cc.

References agg_util::Dimension::size.

const libdap::DataDDS * agg_util::AggMemberDatasetSharedDDSWrapper::getDataDDS ( )
virtual

Access via the wrapped DDSAccessRCInterface.

If the wrapped DDS is NOT a DataDDS, we return NULL!

Returns
null or the wrapped DataDDS

Implements agg_util::AggMemberDataset.

Definition at line 84 of file AggMemberDatasetSharedDDSWrapper.cc.

References agg_util::DDSAccessInterface::getDDS().

Here is the call graph for this function:

const std::string & agg_util::AggMemberDataset::getLocation ( ) const
inherited

The location to which the AggMemberDataset refers Note: this could be "" for some subclasses if they are virtual or nested.

Definition at line 62 of file AggMemberDataset.cc.

Referenced by agg_util::AggregationUtil::addDatasetArrayDataToAggregationOutputArray(), and agg_util::ArrayAggregateOnOuterDimension::readConstrainedGranuleArraysAndAggregateDataHook().

int agg_util::RCObject::getRefCount ( ) const
virtualinherited

Get the current reference count.

Implements agg_util::RCObjectInterface.

Definition at line 110 of file RCObject.cc.

bool agg_util::AggMemberDatasetWithDimensionCacheBase::isDimensionCached ( const std::string &  dimName) const
virtualinherited

Return whether the dimension is already cached, or would have to be loaded to be found.

Implements agg_util::AggMemberDataset.

Definition at line 114 of file AggMemberDatasetWithDimensionCacheBase.cc.

void agg_util::AggMemberDatasetWithDimensionCacheBase::loadDimensionCache ( std::istream &  istr)
virtualinherited

Load the values in the dimension cache from the input stream.

Implements agg_util::AggMemberDataset.

Definition at line 186 of file AggMemberDatasetWithDimensionCacheBase.cc.

AggMemberDatasetSharedDDSWrapper & agg_util::AggMemberDatasetSharedDDSWrapper::operator= ( const AggMemberDatasetSharedDDSWrapper that)

Definition at line 68 of file AggMemberDatasetSharedDDSWrapper.cc.

References agg_util::AggMemberDatasetWithDimensionCacheBase::operator=().

Here is the call graph for this function:

int agg_util::RCObject::ref ( ) const
virtualinherited
void agg_util::RCObject::removeFromPool ( ) const
virtualinherited

If the object is in an auto-delete pool, remove it from the pool and force it to only delete when it's ref count goes to 0.

Useful when we desire a particular object stay around outside of the pool's lifetime.

Implements agg_util::RCObjectInterface.

Definition at line 116 of file RCObject.cc.

References NCML_ASSERT, and agg_util::RCObjectPool::remove().

Here is the call graph for this function:

void agg_util::RCObject::removePreDeleteCB ( UseCountHitZeroCB pCB)
inherited

Remove it exists.

If not, this unchanged.

Definition at line 164 of file RCObject.cc.

References BESDEBUG.

void agg_util::AggMemberDatasetWithDimensionCacheBase::saveDimensionCache ( std::ostream &  ostr)
virtualinherited

Append the values in the dimension cache to the output stream.

Implements agg_util::AggMemberDataset.

Definition at line 179 of file AggMemberDatasetWithDimensionCacheBase.cc.

void agg_util::AggMemberDatasetWithDimensionCacheBase::setDimensionCacheFor ( const Dimension dim,
bool  throwIfFound 
)
virtualinherited

Seed the dimension cache using the given dimension, so that later calls to getDimensionSize for dim.name will return the dim.size immediately without checking or loading the actual DDS.

If it already exists and throwIfFound then will throw an AggregationException.

If it exists and !throwIfFound, will replace the old one.

Parameters
dimthe dimension to seed
iftrue, throw if name take. Else replace original.

Implements agg_util::AggMemberDataset.

Definition at line 124 of file AggMemberDatasetWithDimensionCacheBase.cc.

References agg_util::Dimension::name.

int agg_util::RCObject::unref ( ) const
throw (
)
virtualinherited

Decrease the reference count by one.

If it goes from 1 to 0, delete this and this is no longer valid.

Returns
the new ref count. If it is 0, the caller knows the object was deleted.

It is illegal to unref() an object with a count of 0. We don't throw to allow use in dtors, so the caller is assumed not to do it!

const since the reference count is not part of the semantic constness of the rep

Implements agg_util::RCObjectInterface.

Definition at line 82 of file RCObject.cc.

References BESDEBUG, agg_util::RCObjectPool::release(), and agg_util::RCObject::toString().

Referenced by ncml_module::NetcdfElement::clearDimensions(), agg_util::RCPtr< ncml_module::AggregationElement >::operator=(), ncml_module::AggregationElement::~AggregationElement(), and ncml_module::NetcdfElement::VariableValueValidator::~VariableValueValidator().

Here is the call graph for this function:


The documentation for this class was generated from the following files: