32#include "AggMemberDatasetUsingLocationRef.h"
34#include "BESDataDDSResponse.h"
35#include <libdap/DDS.h>
40#include "BESStopWatch.h"
45#define prolog string("AggMemberDatasetUsingLocationRef::").append(__func__).append("() - ")
49AggMemberDatasetUsingLocationRef::AggMemberDatasetUsingLocationRef(
const std::string& locationToLoad,
50 const agg_util::DDSLoader& loaderToUse) :
55AggMemberDatasetUsingLocationRef::~AggMemberDatasetUsingLocationRef()
60AggMemberDatasetUsingLocationRef::AggMemberDatasetUsingLocationRef(
const AggMemberDatasetUsingLocationRef& proto) :
61 RCObjectInterface(), AggMemberDatasetWithDimensionCacheBase(proto), _loader(proto._loader)
65AggMemberDatasetUsingLocationRef&
66AggMemberDatasetUsingLocationRef::operator=(
const AggMemberDatasetUsingLocationRef& that)
72 AggMemberDatasetWithDimensionCacheBase::operator=(that);
82 if (!_pDataResponse) {
87 pDDSRet = _pDataResponse->get_dds();
93void AggMemberDatasetUsingLocationRef::loadDDS()
95 BES_STOPWATCH_START(MODULE, prolog +
"Timing");
98 if (getLocation().empty()) {
99 THROW_NCML_INTERNAL_ERROR(
"AggMemberDatasetUsingLocationRef():"
100 " got empty location! Cannot load!");
108 NCML_ASSERT_MSG(_pDataResponse,
109 "AggMemberDatasetUsingLocationRef::loadDDS(): failed to get a BESDataDDSResponse back while loading location="
114 (void) newResponse.release();
116 BESDEBUG(
"ncml",
"Loading loadDDS for aggregation member location = " << getLocation() << endl);
117 _loader.loadInto(getLocation(), DDSLoader::eRT_RequestDataDDS, _pDataResponse);
120void AggMemberDatasetUsingLocationRef::cleanup() noexcept
122 SAFE_DELETE(_pDataResponse);
125void AggMemberDatasetUsingLocationRef::copyRepFrom(
const AggMemberDatasetUsingLocationRef& rhs)
127 _loader = rhs._loader;
128 _pDataResponse =
nullptr;
Represents an OPeNDAP DataDDS DAP2 data object within the BES.
const libdap::DDS * getDDS() override
static std::unique_ptr< BESDapResponse > makeResponseForType(ResponseType type)
Helper class for temporarily hijacking an existing dhi to load a DDX response for one particular file...