nidas v1.2.3
Classes | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | Static 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)
 Request a sample from this StatisticsProcessor, containing Parameters indicating what variables to process and what kind of statistics to compute.
 
void selectRequestedSampleTags (const std::vector< unsigned int > &sampleIds)
 
void connectSource (SampleSource *) override
 Do common operations necessary when a input has connected:
 
void disconnectSource (SampleSource *) throw ()
 Disconnect a SampleInput from this StatisticsProcessor.
 
void connect (SampleOutput *output) throw ()
 Implementation of SampleConnectionRequester::connect.
 
void disconnect (SampleOutput *output) throw ()
 Implementation of SampleConnectionRequester::disconnect.
 
void flush () throw ()
 Implementation of SampleSource::flush().
 
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.
 
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.
 
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?
 
virtual void setService (const DSMService *val)
 
virtual const DSMConfiggetDSMConfig () const
 What DSM am I associated with?
 
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.
 
SampleSourcegetProcessedSampleSource ()
 Several objects in NIDAS can be both a SampleSource of raw Samples and processed Samples.
 
virtual std::list< const SampleTag * > getRequestedSampleTags () const
 
void addSampleTag (const SampleTag *tag) throw ()
 Implementation of SampleSource::addSampleTag().
 
void removeSampleTag (const SampleTag *tag) throw ()
 
std::list< const SampleTag * > getSampleTags () const
 Implementation of SampleSource::getSampleTags().
 
SampleTagIterator getSampleTagIterator () const
 Implementation of SampleSource::getSampleTagIterator().
 
void addSampleClient (SampleClient *client) throw ()
 Implementation of SampleSource::addSampleClient().
 
void removeSampleClient (SampleClient *client) throw ()
 Remove a SampleClient from this SampleSource.
 
void addSampleClientForTag (SampleClient *client, const SampleTag *tag) throw ()
 Add a Client for a given SampleTag.
 
void removeSampleClientForTag (SampleClient *client, const SampleTag *tag) throw ()
 Remove a SampleClient for a given SampleTag from this SampleSource.
 
int getClientCount () const throw ()
 How many SampleClients are currently in my list.
 
const SampleStatsgetSampleStats () const
 
virtual void addOutput (SampleOutput *val)
 Add an SampleOutput to this SampleIOProcessor.
 
virtual const std::list< SampleOutput * > & getOutputs () const
 
void addParameter (Parameter *val)
 Add a parameter to this SampleIOProcessor, which will then own the pointer and will delete it in its destructor.
 
const std::list< const Parameter * > & getParameters () const
 Get list of parameters.
 
void fromDOMElement (const xercesc::DOMElement *node)
 
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
 Create a DOMElement and append it to the parent.
 
virtual xercesc::DOMElement * toDOMElement (xercesc::DOMElement *node, bool complete) const
 Add my content into a DOMElement.
 

Static Public Member Functions

static const XMLChgetNamespaceURI ()
 

Protected Member Functions

void removeRequestedSampleTag (SampleTag *tag)
 Allow subclasses to remove requested SampleTags.
 

Protected Attributes

SampleSourceSupport _source
 
nidas::util::Mutex _tagsMutex
 
std::list< SampleTag * > _requestedTags
 

Private Member Functions

 StatisticsProcessor (const StatisticsProcessor &)
 Copy not supported.
 
StatisticsProcessoroperator= (const StatisticsProcessor &)
 Assignment not supported.
 

Private Attributes

nidas::util::Mutex _cruncherListMutex
 Implementation of SampleIOProcessor::addSampleTag(SampleTag*).
 
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.
 
std::string _name
 
dsm_sample_id_t _id
 
std::list< const SampleTag * > _constRequestedTags
 
std::list< SampleOutput * > _origOutputs
 
bool _optional
 
const DSMService_service
 What service am I a part of?
 
const DSMConfig_dsm
 Or, what DSM am I a part of?
 
std::list< Parameter * > _parameters
 
std::list< const Parameter * > _constParameters
 

Static Private Attributes

static XMLChnamespaceURI = 0
 

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() [1/2]

StatisticsProcessor::StatisticsProcessor ( )

◆ ~StatisticsProcessor()

StatisticsProcessor::~StatisticsProcessor ( )

◆ StatisticsProcessor() [2/2]

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

Copy not supported.

Member Function Documentation

◆ addOutput()

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.

Referenced by nidas::core::SampleIOProcessor::fromDOMElement().

◆ addParameter()

void SampleIOProcessor::addParameter ( Parameter * val)
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.

Exceptions
nidas::util::InvalidParameterException

References nidas::core::SampleIOProcessor::_constParameters, and nidas::core::SampleIOProcessor::_parameters.

Referenced by nidas::core::SampleIOProcessor::fromDOMElement().

◆ addRequestedSampleTag()

void StatisticsProcessor::addRequestedSampleTag ( SampleTag * tag)
virtual

◆ addSampleClient()

void nidas::core::SampleIOProcessor::addSampleClient ( SampleClient * client)
throw ( )
inlinevirtualinherited

◆ addSampleClientForTag()

void nidas::core::SampleIOProcessor::addSampleClientForTag ( SampleClient * client,
const SampleTag * tag )
throw ( )
inlinevirtualinherited

◆ addSampleTag()

void SampleIOProcessor::addSampleTag ( const SampleTag * tag)
throw ( )
virtualinherited

◆ connect()

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::core::getSample().

◆ connectSource()

void StatisticsProcessor::connectSource ( SampleSource * source)
overridevirtual

◆ disconnect()

void StatisticsProcessor::disconnect ( SampleOutput * output)
throw ( )
virtual

Implementation of SampleConnectionRequester::disconnect.

Do common operations necessary when a output has disconnected:

  1. do: output->close().
  2. remove output from a list of connected outputs.

Implements nidas::core::SampleConnectionRequester.

References nidas::core::SampleOutputRequestThread::getInstance(), nidas::core::SampleOutput::getOriginal(), nidas::core::getSample(), and LOG_ERR.

◆ disconnectSource()

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::core::getSample().

◆ flush()

void StatisticsProcessor::flush ( )
throw ( )
virtual

◆ fromDOMElement()

void SampleIOProcessor::fromDOMElement ( const xercesc::DOMElement * node)
virtualinherited

◆ getClientCount()

int nidas::core::SampleIOProcessor::getClientCount ( ) const
throw ( )
inlinevirtualinherited

How many SampleClients are currently in my list.

Exceptions

)

Implements nidas::core::SampleSource.

Reimplemented in nidas::dynld::raf::SyncRecordGenerator.

References nidas::core::SampleIOProcessor::_source, and nidas::core::SampleSourceSupport::getClientCount().

◆ getDSMConfig()

virtual const DSMConfig * nidas::core::SampleIOProcessor::getDSMConfig ( ) const
inlinevirtualinherited

◆ getEndTime()

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

References _endTime.

Referenced by connectSource().

◆ getFillGaps()

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.

References _fillGaps.

Referenced by connectSource().

◆ getId()

dsm_sample_id_t nidas::core::SampleIOProcessor::getId ( ) const
inlineinherited

◆ getName()

const std::string & SampleIOProcessor::getName ( ) const
virtualinherited

◆ getNamespaceURI()

static const XMLCh * nidas::core::DOMable::getNamespaceURI ( )
inlinestaticinherited

◆ getOutputs()

virtual const std::list< SampleOutput * > & nidas::core::SampleIOProcessor::getOutputs ( ) const
inlinevirtualinherited

◆ getParameters()

const std::list< const Parameter * > & nidas::core::SampleIOProcessor::getParameters ( ) const
inlineinherited

◆ getPeriod()

float nidas::dynld::StatisticsProcessor::getPeriod ( ) const
inline

References _statsPeriod.

◆ getProcessedSampleSource()

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.

◆ getRawSampleSource()

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.

◆ getRequestedSampleTags()

std::list< const SampleTag * > SampleIOProcessor::getRequestedSampleTags ( ) const
virtualinherited

◆ getSampleId()

unsigned int nidas::core::SampleIOProcessor::getSampleId ( ) const
inlineinherited

◆ getSampleStats()

const SampleStats & nidas::core::SampleIOProcessor::getSampleStats ( ) const
inlinevirtualinherited

◆ getSampleTagIterator()

SampleTagIterator nidas::core::SampleIOProcessor::getSampleTagIterator ( ) const
inlinevirtualinherited

◆ getSampleTags()

std::list< const SampleTag * > nidas::core::SampleIOProcessor::getSampleTags ( ) const
inlinevirtualinherited

◆ getService()

virtual const DSMService * nidas::core::SampleIOProcessor::getService ( ) const
inlinevirtualinherited

What DSMService am I associated with?

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

◆ getStartTime()

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

References _startTime.

Referenced by connectSource().

◆ getUniqueCountsName()

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, and nidas::core::getSample().

Referenced by nidas::dynld::StatisticsCruncher::initStats().

◆ init()

virtual void nidas::core::SampleIOProcessor::init ( dsm_time_t )
throw ( )
inlinevirtualinherited

◆ isOptional()

virtual bool nidas::core::SampleIOProcessor::isOptional ( ) const
inlinevirtualinherited

◆ operator=()

StatisticsProcessor & nidas::dynld::StatisticsProcessor::operator= ( const StatisticsProcessor & )
private

Assignment not supported.

◆ printStatus()

virtual void nidas::core::SampleIOProcessor::printStatus ( std::ostream & ,
float ,
int &  )
throw ( )
inlinevirtualinherited

◆ removeRequestedSampleTag()

void SampleIOProcessor::removeRequestedSampleTag ( SampleTag * tag)
protectedinherited

◆ removeSampleClient()

void nidas::core::SampleIOProcessor::removeSampleClient ( SampleClient * c)
throw ( )
inlinevirtualinherited

Remove a SampleClient from this SampleSource.

Exceptions

)

Implements nidas::core::SampleSource.

Reimplemented in nidas::dynld::raf::SyncRecordGenerator.

References nidas::core::SampleIOProcessor::_source, and nidas::core::SampleSourceSupport::removeSampleClient().

◆ removeSampleClientForTag()

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.

Exceptions

)

Implements nidas::core::SampleSource.

Reimplemented in nidas::dynld::raf::SyncRecordGenerator.

References nidas::core::SampleIOProcessor::_source, and nidas::core::SampleSourceSupport::removeSampleClientForTag().

◆ removeSampleTag()

void SampleIOProcessor::removeSampleTag ( const SampleTag * )
throw ( )
virtualinherited
Exceptions

)

Implements nidas::core::SampleSource.

◆ selectRequestedSampleTags()

void StatisticsProcessor::selectRequestedSampleTags ( const std::vector< unsigned int > & sampleIds)

◆ setDSMConfig()

virtual void nidas::core::SampleIOProcessor::setDSMConfig ( const DSMConfig * val)
inlinevirtualinherited

◆ setEndTime()

void nidas::dynld::StatisticsProcessor::setEndTime ( const nidas::util::UTime & val)
inline

◆ setFillGaps()

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

◆ setName()

void SampleIOProcessor::setName ( const std::string & val)
virtualinherited

◆ setOptional()

virtual void nidas::core::SampleIOProcessor::setOptional ( bool val)
inlinevirtualinherited

◆ setSampleId()

void nidas::core::SampleIOProcessor::setSampleId ( int val)
inlineinherited

◆ setService()

virtual void nidas::core::SampleIOProcessor::setService ( const DSMService * val)
inlinevirtualinherited

◆ setStartTime()

void nidas::dynld::StatisticsProcessor::setStartTime ( const nidas::util::UTime & val)
inline

◆ toDOMElement()

xercesc::DOMElement * DOMable::toDOMElement ( xercesc::DOMElement * node,
bool complete ) const
virtualinherited

◆ toDOMParent()

xercesc::DOMElement * DOMable::toDOMParent ( xercesc::DOMElement * parent,
bool complete ) const
virtualinherited

Create a DOMElement and append it to the parent.

Exceptions
xercesc::DOMException

Reimplemented in nidas::core::DSMConfig, nidas::core::DSMSensor, nidas::core::Project, nidas::core::SampleTag, nidas::core::Site, nidas::core::ServerSocket, and nidas::core::Variable.

Member Data Documentation

◆ _cntsNames

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

Set of counts variables for output samples.

Referenced by getUniqueCountsName().

◆ _connectedOutputs

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

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

◆ _connectedSources

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

Referenced by connectSource().

◆ _constParameters

std::list<const Parameter*> nidas::core::SampleIOProcessor::_constParameters
privateinherited

◆ _constRequestedTags

std::list<const SampleTag*> nidas::core::SampleIOProcessor::_constRequestedTags
privateinherited

◆ _cruncherListMutex

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

Implementation of SampleIOProcessor::addSampleTag(SampleTag*).

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

◆ _crunchers

std::list<StatisticsCruncher*> nidas::dynld::StatisticsProcessor::_crunchers
private

◆ _dsm

const DSMConfig* nidas::core::SampleIOProcessor::_dsm
privateinherited

◆ _endTime

nidas::util::UTime nidas::dynld::StatisticsProcessor::_endTime
private

Referenced by getEndTime(), and setEndTime().

◆ _fillGaps

bool nidas::dynld::StatisticsProcessor::_fillGaps
private

Referenced by getFillGaps(), and setFillGaps().

◆ _id

dsm_sample_id_t nidas::core::SampleIOProcessor::_id
privateinherited

◆ _infoBySampleId

std::map<dsm_sample_id_t,struct OutputInfo> nidas::dynld::StatisticsProcessor::_infoBySampleId
private

◆ _name

std::string nidas::core::SampleIOProcessor::_name
privateinherited

◆ _optional

bool nidas::core::SampleIOProcessor::_optional
privateinherited

◆ _origOutputs

std::list<SampleOutput*> nidas::core::SampleIOProcessor::_origOutputs
privateinherited

◆ _parameters

std::list<Parameter*> nidas::core::SampleIOProcessor::_parameters
privateinherited

◆ _requestedTags

std::list<SampleTag*> nidas::core::SampleIOProcessor::_requestedTags
protectedinherited

◆ _service

const DSMService* nidas::core::SampleIOProcessor::_service
privateinherited

◆ _source

SampleSourceSupport nidas::core::SampleIOProcessor::_source
protectedinherited

◆ _startTime

nidas::util::UTime nidas::dynld::StatisticsProcessor::_startTime
private

Referenced by getStartTime(), and setStartTime().

◆ _statsPeriod

float nidas::dynld::StatisticsProcessor::_statsPeriod
private

Referenced by addRequestedSampleTag(), and getPeriod().

◆ _tagsMutex

nidas::util::Mutex nidas::core::SampleIOProcessor::_tagsMutex
mutableprotectedinherited

◆ namespaceURI

XMLCh * DOMable::namespaceURI = 0
staticprivateinherited

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