nidas  v1.2-1520
Classes | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
nidas::dynld::StatisticsProcessor Class Reference

Interface of a processor of samples. More...

#include <StatisticsProcessor.h>

Inheritance diagram for nidas::dynld::StatisticsProcessor:
Inheritance graph
[legend]

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 DSMServicegetService () const
 What DSMService am I associated with? More...
 
virtual void setService (const DSMService *val)
 
virtual const DSMConfiggetDSMConfig () 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
 
SampleSourcegetRawSampleSource ()
 Several objects in NIDAS can be both a SampleSource of raw Samples and processed Samples. More...
 
SampleSourcegetProcessedSampleSource ()
 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 SampleStatsgetSampleStats () 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...
 
StatisticsProcessoroperator= (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...
 

Detailed Description

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.

Constructor & Destructor Documentation

StatisticsProcessor::StatisticsProcessor ( )
StatisticsProcessor::~StatisticsProcessor ( )
nidas::dynld::StatisticsProcessor::StatisticsProcessor ( const StatisticsProcessor )
private

Copy not supported.

Member Function Documentation

virtual void nidas::core::SampleIOProcessor::addOutput ( SampleOutput val)
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.

void SampleIOProcessor::addParameter ( Parameter val)
throw (nidas::util::InvalidParameterException
)
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.

void StatisticsProcessor::addRequestedSampleTag ( SampleTag tag)
throw (nidas::util::InvalidParameterException
)
virtual
void nidas::core::SampleIOProcessor::addSampleClient ( SampleClient client)
throw (
)
inlinevirtualinherited
void nidas::core::SampleIOProcessor::addSampleClientForTag ( SampleClient client,
const SampleTag tag 
)
throw (
)
inlinevirtualinherited
void SampleIOProcessor::addSampleTag ( const SampleTag tag)
throw (
)
virtualinherited

Implementation of SampleSource::addSampleTag().

Implements nidas::core::SampleSource.

Referenced by connectSource().

void StatisticsProcessor::connect ( SampleOutput output)
throw (
)
virtual

Implementation of SampleConnectionRequester::connect.

Do common operations necessary when a output has connected:

  1. do: output->init().
  2. add output to a list of connected outputs.

Implements nidas::core::SampleConnectionRequester.

References nidas::dynld::StatisticsCruncher::addSampleClient().

void StatisticsProcessor::connectSource ( SampleSource source)
overridevirtual

Do common operations necessary when a input has connected:

  1. Copy the DSMConfig information from the input to the disconnected outputs.
  2. Request connections for all disconnected outputs.

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().

void StatisticsProcessor::disconnect ( SampleOutput output)
throw (
)
virtual
void StatisticsProcessor::disconnectSource ( SampleSource source)
throw (
)
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().

void StatisticsProcessor::flush ( )
throw (
)
virtual
void SampleIOProcessor::fromDOMElement ( const xercesc::DOMElement *  )
throw (nidas::util::InvalidParameterException
)
virtualinherited
int nidas::core::SampleIOProcessor::getClientCount ( ) const
throw (
)
inlinevirtualinherited
virtual const DSMConfig* nidas::core::SampleIOProcessor::getDSMConfig ( ) const
inlinevirtualinherited

What DSM am I associated with?

References nidas::core::SampleIOProcessor::_dsm.

nidas::util::UTime nidas::dynld::StatisticsProcessor::getEndTime ( ) const
inline

Referenced by connectSource().

bool nidas::dynld::StatisticsProcessor::getFillGaps ( ) const
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().

dsm_sample_id_t nidas::core::SampleIOProcessor::getId ( ) const
inlineinherited
const std::string & SampleIOProcessor::getName ( ) const
virtualinherited
static const XMLCh* nidas::core::DOMable::getNamespaceURI ( )
inlinestaticinherited
virtual const std::list<SampleOutput*>& nidas::core::SampleIOProcessor::getOutputs ( ) const
inlinevirtualinherited
const std::list<const Parameter*>& nidas::core::SampleIOProcessor::getParameters ( ) const
inlineinherited

Get list of parameters.

References nidas::core::SampleIOProcessor::_constParameters.

float nidas::dynld::StatisticsProcessor::getPeriod ( ) const
inline
SampleSource* nidas::core::SampleIOProcessor::getProcessedSampleSource ( )
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.

SampleSource* nidas::core::SampleIOProcessor::getRawSampleSource ( )
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.

std::list< const SampleTag * > SampleIOProcessor::getRequestedSampleTags ( ) const
virtualinherited
unsigned int nidas::core::SampleIOProcessor::getSampleId ( ) const
inlineinherited
const SampleStats& nidas::core::SampleIOProcessor::getSampleStats ( ) const
inlinevirtualinherited
SampleTagIterator nidas::core::SampleIOProcessor::getSampleTagIterator ( ) const
inlinevirtualinherited
std::list<const SampleTag*> nidas::core::SampleIOProcessor::getSampleTags ( ) const
inlinevirtualinherited
virtual const DSMService* nidas::core::SampleIOProcessor::getService ( ) const
inlinevirtualinherited

What DSMService am I associated with?

References nidas::core::SampleIOProcessor::_service.

nidas::util::UTime nidas::dynld::StatisticsProcessor::getStartTime ( ) const
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().

virtual void nidas::core::SampleIOProcessor::init ( dsm_time_t  )
throw (
)
inlinevirtualinherited
virtual bool nidas::core::SampleIOProcessor::isOptional ( ) const
inlinevirtualinherited
StatisticsProcessor& nidas::dynld::StatisticsProcessor::operator= ( const StatisticsProcessor )
private

Assignment not supported.

virtual void nidas::core::SampleIOProcessor::printStatus ( std::ostream &  ,
float  ,
int &   
)
throw (
)
inlinevirtualinherited
void SampleIOProcessor::removeRequestedSampleTag ( SampleTag tag)
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().

void nidas::core::SampleIOProcessor::removeSampleClient ( SampleClient c)
throw (
)
inlinevirtualinherited
void nidas::core::SampleIOProcessor::removeSampleClientForTag ( SampleClient c,
const SampleTag  
)
throw (
)
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().

void SampleIOProcessor::removeSampleTag ( const SampleTag tag)
throw (
)
virtualinherited
void StatisticsProcessor::selectRequestedSampleTags ( const std::vector< unsigned int > &  sampleIds)
virtual void nidas::core::SampleIOProcessor::setDSMConfig ( const DSMConfig val)
inlinevirtualinherited
void nidas::dynld::StatisticsProcessor::setEndTime ( const nidas::util::UTime val)
inline

Referenced by StatsProcess::run().

void nidas::dynld::StatisticsProcessor::setFillGaps ( bool  val)
inline

Referenced by StatsProcess::run().

void SampleIOProcessor::setName ( const std::string &  val)
virtualinherited
virtual void nidas::core::SampleIOProcessor::setOptional ( bool  val)
inlinevirtualinherited
void nidas::core::SampleIOProcessor::setSampleId ( int  val)
inlineinherited
virtual void nidas::core::SampleIOProcessor::setService ( const DSMService val)
inlinevirtualinherited
void nidas::dynld::StatisticsProcessor::setStartTime ( const nidas::util::UTime val)
inline

Referenced by StatsProcess::run().

xercesc::DOMElement * DOMable::toDOMElement ( xercesc::DOMElement *  node,
bool  complete 
) const
throw (xercesc::DOMException
)
virtualinherited
xercesc::DOMElement * DOMable::toDOMParent ( xercesc::DOMElement *  parent,
bool  complete 
) const
throw (xercesc::DOMException
)
virtualinherited

Member Data Documentation

std::set<std::string> nidas::dynld::StatisticsProcessor::_cntsNames
private

Set of counts variables for output samples.

Referenced by getUniqueCountsName().

std::set<SampleOutput*> nidas::dynld::StatisticsProcessor::_connectedOutputs
private

Referenced by flush(), and ~StatisticsProcessor().

std::set<SampleSource*> nidas::dynld::StatisticsProcessor::_connectedSources
private

Referenced by connectSource().

nidas::util::Mutex nidas::dynld::StatisticsProcessor::_cruncherListMutex
private

Implementation of SampleIOProcessor::addSampleTag(SampleTag*).

Referenced by connectSource(), flush(), and ~StatisticsProcessor().

std::list<StatisticsCruncher*> nidas::dynld::StatisticsProcessor::_crunchers
private
nidas::util::UTime nidas::dynld::StatisticsProcessor::_endTime
private
bool nidas::dynld::StatisticsProcessor::_fillGaps
private
std::map<dsm_sample_id_t,struct OutputInfo> nidas::dynld::StatisticsProcessor::_infoBySampleId
private

Referenced by connectSource().

std::list<SampleTag*> nidas::core::SampleIOProcessor::_requestedTags
protectedinherited
SampleSourceSupport nidas::core::SampleIOProcessor::_source
protectedinherited
nidas::util::UTime nidas::dynld::StatisticsProcessor::_startTime
private
float nidas::dynld::StatisticsProcessor::_statsPeriod
private
nidas::util::Mutex nidas::core::SampleIOProcessor::_tagsMutex
mutableprotectedinherited

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