nidas
v1.2-1520
|
Interface of a processor of samples. More...
#include <StatisticsProcessor.h>
Classes | |
struct | OutputInfo |
Public Member Functions | |
StatisticsProcessor () | |
~StatisticsProcessor () | |
void | addRequestedSampleTag (SampleTag *tag) throw (nidas::util::InvalidParameterException) |
Request a sample from this StatisticsProcessor, containing Parameters indicating what variables to process and what kind of statistics to compute. More... | |
void | selectRequestedSampleTags (const std::vector< unsigned int > &sampleIds) |
void | connectSource (SampleSource *) override |
Do common operations necessary when a input has connected: More... | |
void | disconnectSource (SampleSource *) throw () |
Disconnect a SampleInput from this StatisticsProcessor. More... | |
void | connect (SampleOutput *output) throw () |
Implementation of SampleConnectionRequester::connect. More... | |
void | disconnect (SampleOutput *output) throw () |
Implementation of SampleConnectionRequester::disconnect. More... | |
void | flush () throw () |
Implementation of SampleSource::flush(). More... | |
void | setStartTime (const nidas::util::UTime &val) |
nidas::util::UTime | getStartTime () const |
void | setEndTime (const nidas::util::UTime &val) |
nidas::util::UTime | getEndTime () const |
float | getPeriod () const |
bool | getFillGaps () const |
Whether to generate output samples over time gaps. More... | |
void | setFillGaps (bool val) |
std::string | getUniqueCountsName (const std::string &val) |
All output samples (and StatisticsCrunchers) should have a unique name for their counts output variable. More... | |
virtual const std::string & | getName () const |
virtual void | setName (const std::string &val) |
virtual void | setOptional (bool val) |
virtual bool | isOptional () const |
virtual const DSMService * | getService () const |
What DSMService am I associated with? More... | |
virtual void | setService (const DSMService *val) |
virtual const DSMConfig * | getDSMConfig () const |
What DSM am I associated with? More... | |
virtual void | setDSMConfig (const DSMConfig *val) |
dsm_sample_id_t | getId () const |
void | setSampleId (int val) |
unsigned int | getSampleId () const |
SampleSource * | getRawSampleSource () |
Several objects in NIDAS can be both a SampleSource of raw Samples and processed Samples. More... | |
SampleSource * | getProcessedSampleSource () |
Several objects in NIDAS can be both a SampleSource of raw Samples and processed Samples. More... | |
virtual std::list< const SampleTag * > | getRequestedSampleTags () const |
void | addSampleTag (const SampleTag *tag) throw () |
Implementation of SampleSource::addSampleTag(). More... | |
void | removeSampleTag (const SampleTag *tag) throw () |
std::list< const SampleTag * > | getSampleTags () const |
Implementation of SampleSource::getSampleTags(). More... | |
SampleTagIterator | getSampleTagIterator () const |
Implementation of SampleSource::getSampleTagIterator(). More... | |
void | addSampleClient (SampleClient *client) throw () |
Implementation of SampleSource::addSampleClient(). More... | |
void | removeSampleClient (SampleClient *client) throw () |
Remove a SampleClient from this SampleSource. More... | |
void | addSampleClientForTag (SampleClient *client, const SampleTag *tag) throw () |
Add a Client for a given SampleTag. More... | |
void | removeSampleClientForTag (SampleClient *client, const SampleTag *tag) throw () |
Remove a SampleClient for a given SampleTag from this SampleSource. More... | |
int | getClientCount () const throw () |
How many SampleClients are currently in my list. More... | |
const SampleStats & | getSampleStats () const |
virtual void | addOutput (SampleOutput *val) |
Add an SampleOutput to this SampleIOProcessor. More... | |
virtual const std::list < SampleOutput * > & | getOutputs () const |
void | addParameter (Parameter *val) throw (nidas::util::InvalidParameterException) |
Add a parameter to this SampleIOProcessor, which will then own the pointer and will delete it in its destructor. More... | |
const std::list< const Parameter * > & | getParameters () const |
Get list of parameters. More... | |
void | fromDOMElement (const xercesc::DOMElement *node) throw (nidas::util::InvalidParameterException) |
Initialize myself from a xercesc::DOMElement. More... | |
virtual void | printStatus (std::ostream &, float, int &) throw () |
virtual void | init (dsm_time_t) throw () |
virtual xercesc::DOMElement * | toDOMParent (xercesc::DOMElement *parent, bool complete) const throw (xercesc::DOMException) |
Create a DOMElement and append it to the parent. More... | |
virtual xercesc::DOMElement * | toDOMElement (xercesc::DOMElement *node, bool complete) const throw (xercesc::DOMException) |
Add my content into a DOMElement. More... | |
Static Public Member Functions | |
static const XMLCh * | getNamespaceURI () |
Protected Member Functions | |
void | removeRequestedSampleTag (SampleTag *tag) |
Allow subclasses to remove requested SampleTags. More... | |
Protected Attributes | |
SampleSourceSupport | _source |
nidas::util::Mutex | _tagsMutex |
std::list< SampleTag * > | _requestedTags |
Private Member Functions | |
StatisticsProcessor (const StatisticsProcessor &) | |
Copy not supported. More... | |
StatisticsProcessor & | operator= (const StatisticsProcessor &) |
Assignment not supported. More... | |
Private Attributes | |
nidas::util::Mutex | _cruncherListMutex |
Implementation of SampleIOProcessor::addSampleTag(SampleTag*). More... | |
std::set< SampleSource * > | _connectedSources |
std::set< SampleOutput * > | _connectedOutputs |
std::list< StatisticsCruncher * > | _crunchers |
std::map< dsm_sample_id_t, struct OutputInfo > | _infoBySampleId |
nidas::util::UTime | _startTime |
nidas::util::UTime | _endTime |
float | _statsPeriod |
bool | _fillGaps |
std::set< std::string > | _cntsNames |
Set of counts variables for output samples. More... | |
Interface of a processor of samples.
A StatisticsProcessor reads input Samples from a single SampleInput, and sends its processed output Samples to one or more SampleOutputs.
StatisticsProcessor::StatisticsProcessor | ( | ) |
References nidas::core::SampleIOProcessor::setName().
StatisticsProcessor::~StatisticsProcessor | ( | ) |
References _connectedOutputs, _cruncherListMutex, _crunchers, nidas::core::SampleOutput::close(), nidas::core::SampleClient::flush(), nidas::dynld::StatisticsCruncher::flush(), nidas::util::Logger::getInstance(), nidas::core::SampleOutput::getName(), nidas::core::SampleIOProcessor::getName(), nidas::core::SampleOutput::getOriginal(), nidas::util::Mutex::lock(), nidas::util::Logger::log(), LOG_ERR, nidas::dynld::StatisticsCruncher::removeSampleClient(), nidas::util::Mutex::unlock(), and nidas::util::Exception::what().
|
private |
Copy not supported.
|
inlinevirtualinherited |
Add an SampleOutput to this SampleIOProcessor.
This is used to add a desired SampleOutput to this SampleIOProcessor. SampleIOProcessor will own the SampleOutput. Once a SampleSource has connected, then SampleIOProcessor is responsible for do SampleOutput::requestConnection, or SampleOutputRequestThread::addConnectRequest() on all these as-yet disconnected outputs.
References nidas::core::SampleIOProcessor::_origOutputs.
|
inherited |
Add a parameter to this SampleIOProcessor, which will then own the pointer and will delete it in its destructor.
If a Parameter exists with the same name, it will be replaced with the new Parameter.
|
virtual |
Request a sample from this StatisticsProcessor, containing Parameters indicating what variables to process and what kind of statistics to compute.
Reimplemented from nidas::core::SampleIOProcessor.
References nidas::core::SampleIOProcessor::addRequestedSampleTag(), nidas::core::Parameter::BOOL_PARAM, nidas::dynld::StatisticsProcessor::OutputInfo::countsName, nidas::core::Project::expandString(), GET_DSM_ID, GET_SPS_ID, nidas::core::Project::getInstance(), nidas::core::Parameter::getLength(), nidas::core::Parameter::getName(), nidas::core::Parameter::getNumericValue(), nidas::core::Project::getParameter(), nidas::dynld::StatisticsCruncher::getStatisticsType(), nidas::core::Parameter::getStringValue(), nidas::core::Parameter::getType(), nidas::dynld::StatisticsProcessor::OutputInfo::higherMoments, ILOG, nidas::core::Parameter::INT_PARAM, nidas::core::Variable::setName(), nidas::dynld::StatisticsCruncher::STATS_UNKNOWN, nidas::dynld::StatisticsCruncher::STATS_WINDDIR, nidas::core::Parameter::STRING_PARAM, and nidas::dynld::StatisticsProcessor::OutputInfo::type.
|
inlinevirtualinherited |
Implementation of SampleSource::addSampleClient().
Implements nidas::core::SampleSource.
Reimplemented in nidas::dynld::raf::SyncRecordGenerator.
References nidas::core::SampleIOProcessor::_source, and nidas::core::SampleSourceSupport::addSampleClient().
|
inlinevirtualinherited |
Add a Client for a given SampleTag.
Implementation of SampleSource::addSampleClient().
Implements nidas::core::SampleSource.
Reimplemented in nidas::dynld::raf::SyncRecordGenerator.
References nidas::core::SampleIOProcessor::_source, and nidas::core::SampleSourceSupport::addSampleClientForTag().
|
virtualinherited |
Implementation of SampleSource::addSampleTag().
Implements nidas::core::SampleSource.
Referenced by connectSource().
|
virtual |
Implementation of SampleConnectionRequester::connect.
Do common operations necessary when a output has connected:
Implements nidas::core::SampleConnectionRequester.
References nidas::dynld::StatisticsCruncher::addSampleClient().
|
overridevirtual |
Do common operations necessary when a input has connected:
connect() methods in subclasses should do whatever initialization necessary before invoking this StatisticsProcessor::connect().
Implements nidas::core::SampleIOProcessor.
References _connectedSources, _cruncherListMutex, _crunchers, _infoBySampleId, nidas::core::SampleOutputRequestThread::addConnectRequest(), nidas::core::SampleIOProcessor::addSampleTag(), nidas::core::SampleOutput::addSourceSampleTags(), nidas::core::Variable::closeMatch(), nidas::dynld::StatisticsCruncher::connect(), nidas::dynld::StatisticsProcessor::OutputInfo::countsName, nidas::core::SampleTag::getDSMId(), getEndTime(), getFillGaps(), nidas::core::SampleTag::getId(), nidas::core::SampleOutputRequestThread::getInstance(), nidas::util::Logger::getInstance(), nidas::core::Site::getName(), nidas::core::SampleIOProcessor::getName(), nidas::core::Variable::getName(), nidas::core::SampleIOProcessor::getOutputs(), nidas::core::SampleSource::getProcessedSampleSource(), nidas::core::SampleIOProcessor::getRequestedSampleTags(), nidas::core::Variable::getSampleTag(), nidas::dynld::StatisticsCruncher::getSampleTags(), nidas::core::SampleSource::getSampleTags(), nidas::core::SampleIOProcessor::getSampleTags(), nidas::core::Variable::getSite(), nidas::core::SampleTag::getSpSId(), getStartTime(), nidas::core::Variable::getStation(), nidas::core::Site::getSuffix(), nidas::core::SampleTag::getVariable(), nidas::core::SampleTag::getVariableIterator(), nidas::core::SampleTag::getVariables(), nidas::core::VariableIterator::hasNext(), nidas::dynld::StatisticsProcessor::OutputInfo::higherMoments, nidas::util::Mutex::lock(), nidas::util::Logger::log(), LOG_WARNING, nidas::core::SampleTag::setDSMId(), nidas::dynld::StatisticsCruncher::setEndTime(), nidas::dynld::StatisticsCruncher::setFillGaps(), nidas::core::Variable::setSite(), nidas::dynld::StatisticsCruncher::setStartTime(), nidas::core::Variable::setStation(), nidas::dynld::StatisticsProcessor::OutputInfo::type, and nidas::util::Mutex::unlock().
Referenced by StatsProcess::run().
|
virtual |
Implementation of SampleConnectionRequester::disconnect.
Do common operations necessary when a output has disconnected:
Implements nidas::core::SampleConnectionRequester.
References nidas::core::SampleOutputRequestThread::addConnectRequest(), nidas::core::SampleOutputRequestThread::addDeleteRequest(), nidas::core::SampleOutputRequestThread::getInstance(), nidas::util::Logger::getInstance(), nidas::core::SampleOutput::getOriginal(), nidas::core::SampleOutput::getReconnectDelaySecs(), nidas::util::Logger::log(), LOG_ERR, nidas::dynld::StatisticsCruncher::removeSampleClient(), and nidas::util::Exception::what().
|
virtual |
Disconnect a SampleInput from this StatisticsProcessor.
Right now just does a flush() of all connected outputs.
Implements nidas::core::SampleIOProcessor.
References nidas::dynld::StatisticsCruncher::disconnect(), and nidas::dynld::StatisticsCruncher::flush().
Referenced by StatsProcess::run().
|
virtual |
Implementation of SampleSource::flush().
Finish the current statistics and send them on.
Implements nidas::core::SampleSource.
References _connectedOutputs, _cruncherListMutex, _crunchers, nidas::core::SampleClient::flush(), nidas::dynld::StatisticsCruncher::flush(), nidas::util::Mutex::lock(), and nidas::util::Mutex::unlock().
|
virtualinherited |
Initialize myself from a xercesc::DOMElement.
Implements nidas::core::DOMable.
Reimplemented in nidas::dynld::raf::CVIProcessor.
References nidas::core::DOMObjectFactory::createObject(), nidas::core::Parameter::createParameter(), nidas::core::DOMable::fromDOMElement(), nidas::core::SampleTag::fromDOMElement(), nidas::core::XDOMElement::getAttributeValue(), nidas::core::Project::getInstance(), nidas::core::XDOMAttr::getName(), nidas::core::XDOMElement::getNodeName(), nidas::core::SampleTag::getSampleId(), nidas::core::SampleTag::setSampleId(), nidas::core::SampleTag::setSensorId(), and nidas::util::Exception::what().
Referenced by nidas::core::DSMService::fromDOMElement(), nidas::dynld::raf::CVIProcessor::fromDOMElement(), and nidas::core::DSMConfig::fromDOMElement().
|
inlinevirtualinherited |
How many SampleClients are currently in my list.
Implements nidas::core::SampleSource.
Reimplemented in nidas::dynld::raf::SyncRecordGenerator.
References nidas::core::SampleIOProcessor::_source, and nidas::core::SampleSourceSupport::getClientCount().
|
inlinevirtualinherited |
What DSM am I associated with?
References nidas::core::SampleIOProcessor::_dsm.
|
inline |
Referenced by connectSource().
|
inline |
Whether to generate output samples over time gaps.
In some circumstances one might be generating statistics for separate time periods, and one does not want to output samples of missing data for the gaps between the periods.
Referenced by connectSource().
|
inlineinherited |
References nidas::core::SampleIOProcessor::_id, and GET_FULL_ID.
|
virtualinherited |
|
inlinestaticinherited |
References nidas::core::DOMable::namespaceURI.
Referenced by nidas::dynld::UDPSampleOutput::getProjectDOM(), nidas::core::Dataset::toDOMElement(), nidas::core::ProjectConfig::toDOMElement(), nidas::core::Dataset::toDOMParent(), nidas::core::ProjectConfig::toDOMParent(), nidas::core::Datasets::toDOMParent(), nidas::core::ProjectConfigs::toDOMParent(), nidas::core::DSMConfig::toDOMParent(), nidas::core::Project::toDOMParent(), nidas::core::Site::toDOMParent(), nidas::core::SampleTag::toDOMParent(), nidas::core::ServerSocket::toDOMParent(), nidas::core::Variable::toDOMParent(), nidas::core::DSMSensor::toDOMParent(), nidas::core::Datasets::writeXML(), and nidas::core::ProjectConfigs::writeXML().
|
inlinevirtualinherited |
References nidas::core::SampleIOProcessor::_origOutputs.
Referenced by nidas::dynld::raf::SyncRecordGenerator::connectSource(), connectSource(), nidas::core::SampleArchiver::connectSource(), nidas::core::Project::findServerSampleOutputStreamFileSets(), nidas::dynld::isff::GOESProject::GOESProject(), and StatsProcess::run().
|
inlineinherited |
Get list of parameters.
References nidas::core::SampleIOProcessor::_constParameters.
|
inline |
Referenced by StatsProcess::getStatisticsProcessor().
|
inlinevirtualinherited |
Several objects in NIDAS can be both a SampleSource of raw Samples and processed Samples.
SampleClients use this method to get a pointer to whatever sample source they are interested in. Derived classes can return NULL if they are not a SampleSource of processed samples.
Implements nidas::core::SampleSource.
References nidas::core::SampleIOProcessor::_source.
|
inlinevirtualinherited |
Several objects in NIDAS can be both a SampleSource of raw Samples and processed Samples.
SampleClients use this method to get a pointer to whatever sample source they are interested in. Derived classes can return NULL if they are not a SampleSource of raw samples.
Implements nidas::core::SampleSource.
|
virtualinherited |
|
inlineinherited |
References nidas::core::SampleIOProcessor::_id, and GET_SPS_ID.
Referenced by StatsProcess::listOutputSamples(), and selectRequestedSampleTags().
|
inlinevirtualinherited |
Implements nidas::core::SampleSource.
Reimplemented in nidas::dynld::raf::SyncRecordGenerator.
References nidas::core::SampleIOProcessor::_source, and nidas::core::SampleSourceSupport::getSampleStats().
|
inlinevirtualinherited |
Implementation of SampleSource::getSampleTagIterator().
Implements nidas::core::SampleSource.
Reimplemented in nidas::dynld::raf::SyncRecordGenerator.
References nidas::core::SampleIOProcessor::_source, and nidas::core::SampleSourceSupport::getSampleTagIterator().
|
inlinevirtualinherited |
Implementation of SampleSource::getSampleTags().
Implements nidas::core::SampleSource.
Reimplemented in nidas::dynld::psql::PSQLProcessor, and nidas::dynld::raf::SyncRecordGenerator.
References nidas::core::SampleIOProcessor::_source, and nidas::core::SampleSourceSupport::getSampleTags().
Referenced by connectSource().
|
inlinevirtualinherited |
What DSMService am I associated with?
References nidas::core::SampleIOProcessor::_service.
|
inline |
Referenced by connectSource().
string StatisticsProcessor::getUniqueCountsName | ( | const std::string & | val | ) |
All output samples (and StatisticsCrunchers) should have a unique name for their counts output variable.
This will check if val exists in _cntsNames. If not, it is added to _cntsNames and returned as a unique name. If it is in _cntsName, a suffix of "_N" where N is 1:Inf is appended until it is unique.
References _cntsNames.
Referenced by nidas::dynld::StatisticsCruncher::initStats().
|
inlinevirtualinherited |
Reimplemented in nidas::dynld::raf::SyncRecordGenerator.
Referenced by nidas::dynld::RawSampleService::schedule().
|
inlinevirtualinherited |
References nidas::core::SampleIOProcessor::_optional.
Referenced by nidas::dynld::RawSampleService::schedule().
|
private |
Assignment not supported.
|
inlinevirtualinherited |
Reimplemented in nidas::dynld::raf::SyncRecordGenerator, and nidas::core::SampleArchiver.
Referenced by nidas::dynld::RawSampleService::printStatus().
|
protectedinherited |
Allow subclasses to remove requested SampleTags.
The tag will be deleted.
References nidas::core::SampleIOProcessor::_constRequestedTags, nidas::core::SampleIOProcessor::_requestedTags, and nidas::core::SampleIOProcessor::_tagsMutex.
Referenced by selectRequestedSampleTags().
|
inlinevirtualinherited |
Remove a SampleClient from this SampleSource.
Implements nidas::core::SampleSource.
Reimplemented in nidas::dynld::raf::SyncRecordGenerator.
References nidas::core::SampleIOProcessor::_source, and nidas::core::SampleSourceSupport::removeSampleClient().
|
inlinevirtualinherited |
Remove a SampleClient for a given SampleTag from this SampleSource.
The pointer to the SampleClient must remain valid, until after it is removed.
Implements nidas::core::SampleSource.
Reimplemented in nidas::dynld::raf::SyncRecordGenerator.
References nidas::core::SampleIOProcessor::_source, and nidas::core::SampleSourceSupport::removeSampleClientForTag().
|
virtualinherited |
Implements nidas::core::SampleSource.
void StatisticsProcessor::selectRequestedSampleTags | ( | const std::vector< unsigned int > & | sampleIds | ) |
References nidas::core::SampleIOProcessor::_requestedTags, nidas::core::SampleIOProcessor::_tagsMutex, nidas::core::SampleIOProcessor::getSampleId(), nidas::core::SampleTag::getSpSId(), nidas::util::Mutex::lock(), nidas::core::SampleIOProcessor::removeRequestedSampleTag(), and nidas::util::Mutex::unlock().
Referenced by StatsProcess::run().
|
inlinevirtualinherited |
References nidas::core::SampleIOProcessor::_dsm.
Referenced by nidas::core::DSMConfig::fromDOMElement().
|
inline |
Referenced by StatsProcess::run().
|
inline |
Referenced by StatsProcess::run().
|
virtualinherited |
|
inlinevirtualinherited |
References nidas::core::SampleIOProcessor::_optional.
|
inlineinherited |
References nidas::core::SampleIOProcessor::_id, and SET_SPS_ID.
|
inlinevirtualinherited |
References nidas::core::SampleIOProcessor::_service.
Referenced by nidas::core::DSMService::fromDOMElement().
|
inline |
Referenced by StatsProcess::run().
|
virtualinherited |
Add my content into a DOMElement.
Reimplemented in nidas::core::DSMSensor, nidas::core::Variable, nidas::core::ServerSocket, nidas::core::SampleTag, nidas::core::Site, nidas::core::Project, and nidas::core::DSMConfig.
Referenced by nidas::core::ServerSocket::toDOMParent().
|
virtualinherited |
Create a DOMElement and append it to the parent.
Reimplemented in nidas::core::DSMSensor, nidas::core::Variable, nidas::core::ServerSocket, nidas::core::SampleTag, nidas::core::Site, nidas::core::Project, and nidas::core::DSMConfig.
|
private |
Set of counts variables for output samples.
Referenced by getUniqueCountsName().
|
private |
Referenced by flush(), and ~StatisticsProcessor().
|
private |
Referenced by connectSource().
|
private |
Implementation of SampleIOProcessor::addSampleTag(SampleTag*).
Referenced by connectSource(), flush(), and ~StatisticsProcessor().
|
private |
Referenced by connectSource(), flush(), and ~StatisticsProcessor().
|
private |
|
private |
|
private |
Referenced by connectSource().
|
protectedinherited |
|
protectedinherited |
Referenced by nidas::core::SampleIOProcessor::addSampleClient(), nidas::core::SampleIOProcessor::addSampleClientForTag(), nidas::core::SampleIOProcessor::getClientCount(), nidas::core::SampleIOProcessor::getProcessedSampleSource(), nidas::core::SampleIOProcessor::getSampleStats(), nidas::core::SampleIOProcessor::getSampleTagIterator(), nidas::core::SampleIOProcessor::getSampleTags(), nidas::core::SampleIOProcessor::removeSampleClient(), and nidas::core::SampleIOProcessor::removeSampleClientForTag().
|
private |
|
private |
|
mutableprotectedinherited |