nidas v1.2.3
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::core::SampleOutputBase Class Referenceabstract

Implementation of portions of SampleOutput. More...

#include <SampleOutput.h>

Inheritance diagram for nidas::core::SampleOutputBase:
Inheritance graph
[legend]

Public Member Functions

 SampleOutputBase ()
 
 SampleOutputBase (IOChannel *iochan, SampleConnectionRequester *rqstr=0)
 Create a SampleOutput with a connected IOChannel.
 
 ~SampleOutputBase ()
 
virtual void setIOChannel (IOChannel *val)
 Set the IOChannel for this SampleOutput.
 
SampleOutputgetOriginal () const
 Get pointer to SampleOutput that was cloned.
 
void setName (const std::string &val)
 
const std::string & getName () const
 
bool isRaw () const
 
void addRequestedSampleTag (SampleTag *tag)
 
std::list< const SampleTag * > getRequestedSampleTags () const
 
void addSourceSampleTag (const SampleTag *tag)
 
void addSourceSampleTags (const std::list< const SampleTag * > &tags)
 
std::list< const SampleTag * > getSourceSampleTags () const
 
void requestConnection (SampleConnectionRequester *)
 Request a connection, but don't wait for it.
 
SampleOutputconnected (IOChannel *ochan)
 Implementation of IOChannelRequester::connected().
 
int getReconnectDelaySecs () const
 Base class implementation.
 
void setReconnectDelaySecs (int val)
 
int getFd () const
 
void close ()
 
dsm_time_t getNextFileTime () const
 
void createNextFile (dsm_time_t)
 
size_t write (const void *buf, size_t len)
 Raw write method, typically used to write the initial header.
 
void fromDOMElement (const xercesc::DOMElement *node)
 
IOChannelgetIOChannel () const
 
void setHeaderSource (HeaderSource *val)
 
void setDSMConfig (const DSMConfig *val)
 
const DSMConfiggetDSMConfig () const
 
size_t getNumDiscardedSamples () const
 
void addParameter (Parameter *val)
 Add a parameter to this DSMSensor.
 
const std::list< const Parameter * > & getParameters () const
 Get list of parameters.
 
const ParametergetParameter (const std::string &name) const
 Fetch a parameter by name.
 
void setLatency (float val)
 Set desired latency, providing some control over the response time vs buffer efficiency tradeoff.
 
float getLatency () const
 
void setTimeClippingWindow (const nidas::util::UTime &startTime, const nidas::util::UTime &endTime)
 The sample output can have a time window which clips the samples outside the window.
 
bool receive (const Sample *s)
 Return true if SampleOutputBase considers the sample handled, such as if it is outside the clipping window.
 
virtual void flush ()=0
 Ask that this SampleClient send out any buffered Samples that it may be holding.
 
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

 SampleOutputBase (SampleOutputBase &, IOChannel *)
 Protected copy constructor, with a new, connected IOChannel.
 
size_t incrementDiscardedSamples ()
 
SampleConnectionRequestergetSampleConnectionRequester ()
 
void disconnect ()
 Close the IOChannel and notify whoever did the requestConnection that it is time to disconnect, perhaps because of an IOException.
 
virtual SampleOutputclone (IOChannel *iochannel)=0
 

Protected Attributes

std::string _name
 

Private Member Functions

 SampleOutputBase (const SampleOutputBase &)
 No copy.
 
SampleOutputBaseoperator= (const SampleOutputBase &)
 No assignment.
 

Private Attributes

nidas::util::Mutex _tagsMutex
 
std::list< SampleTag * > _requestedTags
 
std::list< const SampleTag * > _constRequestedTags
 
IOChannel_iochan
 
SampleConnectionRequester_connectionRequester
 
dsm_time_t _nextFileTime
 
HeaderSource_headerSource
 
const DSMConfig_dsm
 
size_t _nsamplesDiscarded
 
std::map< std::string, Parameter * > _parameters
 Map of parameters by name.
 
std::list< const Parameter * > _constParameters
 List of const pointers to Parameters for providing via getParameters().
 
std::list< const SampleTag * > _sourceTags
 
SampleOutput_original
 Pointer to the SampleOutput that I was cloned from.
 
float _latency
 
int _reconnectDelaySecs
 
dsm_time_t _startTime
 Clipping time window.
 
dsm_time_t _endTime
 

Static Private Attributes

static XMLChnamespaceURI = 0
 

Detailed Description

Implementation of portions of SampleOutput.

Constructor & Destructor Documentation

◆ SampleOutputBase() [1/4]

SampleOutputBase::SampleOutputBase ( )

◆ SampleOutputBase() [2/4]

SampleOutputBase::SampleOutputBase ( IOChannel * iochan,
SampleConnectionRequester * rqstr = 0 )

Create a SampleOutput with a connected IOChannel.

Parameters
rqstrIf non-NULL, who to call to notify that the connection has dropped.

◆ ~SampleOutputBase()

SampleOutputBase::~SampleOutputBase ( )

◆ SampleOutputBase() [3/4]

SampleOutputBase::SampleOutputBase ( SampleOutputBase & x,
IOChannel * ioc )
protected

◆ SampleOutputBase() [4/4]

nidas::core::SampleOutputBase::SampleOutputBase ( const SampleOutputBase & )
private

No copy.

Member Function Documentation

◆ addParameter()

void SampleOutputBase::addParameter ( Parameter * val)

Add a parameter to this DSMSensor.

DSMSensor 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.

References _constParameters, _parameters, and nidas::core::getSample().

Referenced by fromDOMElement().

◆ addRequestedSampleTag()

void SampleOutputBase::addRequestedSampleTag ( SampleTag * tag)
virtual

◆ addSourceSampleTag()

void SampleOutputBase::addSourceSampleTag ( const SampleTag * tag)
virtual

◆ addSourceSampleTags()

void SampleOutputBase::addSourceSampleTags ( const std::list< const SampleTag * > & tags)
virtual

◆ clone()

virtual SampleOutput * nidas::core::SampleOutput::clone ( IOChannel * iochannel)
protectedpure virtualinherited

◆ close()

void SampleOutputBase::close ( )
virtual

◆ connected()

SampleOutput * SampleOutputBase::connected ( IOChannel * ochan)
virtual

◆ createNextFile()

void SampleOutputBase::createNextFile ( dsm_time_t tt)

◆ disconnect()

void SampleOutputBase::disconnect ( )
protected

Close the IOChannel and notify whoever did the requestConnection that it is time to disconnect, perhaps because of an IOException.

This is typically called in the receive() method of a SampleOutput if it gets an IOException when writing data. A common implementation of a connection requester is to delete this SampleOutput after the removing it from the sample stream. So the caller method should immediately return after calling disconnect().

Exceptions
nidas::util::IOException

References _connectionRequester, close(), nidas::core::SampleConnectionRequester::disconnect(), getName(), nidas::core::getSample(), and ILOG.

Referenced by nidas::dynld::AsciiOutput::receive(), and nidas::dynld::raf::CVIOutput::receive().

◆ flush()

virtual void nidas::core::SampleClient::flush ( )
pure virtualinherited

◆ fromDOMElement()

void SampleOutputBase::fromDOMElement ( const xercesc::DOMElement * node)
virtual

◆ getDSMConfig()

const DSMConfig * nidas::core::SampleOutputBase::getDSMConfig ( ) const
inlinevirtual

◆ getFd()

int SampleOutputBase::getFd ( ) const
virtual

◆ getIOChannel()

IOChannel * nidas::core::SampleOutputBase::getIOChannel ( ) const
inlinevirtual

◆ getLatency()

float nidas::core::SampleOutputBase::getLatency ( ) const
inlinevirtual

◆ getName()

const std::string & nidas::core::SampleOutputBase::getName ( ) const
inlinevirtual

◆ getNamespaceURI()

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

◆ getNextFileTime()

dsm_time_t nidas::core::SampleOutputBase::getNextFileTime ( ) const
inline

◆ getNumDiscardedSamples()

size_t nidas::core::SampleOutputBase::getNumDiscardedSamples ( ) const
inline

References _nsamplesDiscarded.

◆ getOriginal()

SampleOutput * nidas::core::SampleOutputBase::getOriginal ( ) const
inlinevirtual

Get pointer to SampleOutput that was cloned.

Will be NULL if this SampleOutput is an un-cloned original.

Implements nidas::core::SampleOutput.

References _original.

◆ getParameter()

const Parameter * SampleOutputBase::getParameter ( const std::string & name) const

Fetch a parameter by name.

Returns a NULL pointer if no such parameter exists.

References _parameters.

◆ getParameters()

const std::list< const Parameter * > & nidas::core::SampleOutputBase::getParameters ( ) const
inline

Get list of parameters.

References _constParameters.

Referenced by nidas::dynld::UDPSampleOutput::fromDOMElement().

◆ getReconnectDelaySecs()

int SampleOutputBase::getReconnectDelaySecs ( ) const
virtual

Base class implementation.

If setReconnectDelaySecs() has been called on this SampleOutput, then that value will be returned. Otherwise this will return the value of the IOChannel.

Implements nidas::core::SampleOutput.

References _iochan, _reconnectDelaySecs, and nidas::core::IOChannel::getReconnectDelaySecs().

◆ getRequestedSampleTags()

std::list< const SampleTag * > SampleOutputBase::getRequestedSampleTags ( ) const
virtual

◆ getSampleConnectionRequester()

SampleConnectionRequester * nidas::core::SampleOutputBase::getSampleConnectionRequester ( )
inlineprotected

References _connectionRequester.

◆ getSourceSampleTags()

list< const SampleTag * > SampleOutputBase::getSourceSampleTags ( ) const
virtual

◆ incrementDiscardedSamples()

size_t nidas::core::SampleOutputBase::incrementDiscardedSamples ( )
inlineprotected

References _nsamplesDiscarded.

◆ isRaw()

bool nidas::core::SampleOutputBase::isRaw ( ) const
inlinevirtual

◆ operator=()

SampleOutputBase & nidas::core::SampleOutputBase::operator= ( const SampleOutputBase & )
private

No assignment.

◆ receive()

bool SampleOutputBase::receive ( const Sample * s)
virtual

Return true if SampleOutputBase considers the sample handled, such as if it is outside the clipping window.

Otherwise return false to indicate the subclass should handle the sample.

Implements nidas::core::SampleClient.

Reimplemented in nidas::dynld::UDPSampleOutput, and nidas::dynld::SampleOutputStream.

References _endTime, and _startTime.

◆ requestConnection()

void SampleOutputBase::requestConnection ( SampleConnectionRequester * requester)
virtual

Request a connection, but don't wait for it.

Requester will be notified via SampleConnectionRequester interface when the connection has been made. It is not necessary to call this method if a SampleOutput is constructed with a connected IOChannel.

Exceptions
nidas::util::IOException

Implements nidas::core::SampleOutput.

References _connectionRequester, _iochan, nidas::core::getSample(), and nidas::core::IOChannel::requestConnection().

Referenced by nidas::dynld::AsciiOutput::requestConnection(), and nidas::dynld::raf::CVIOutput::requestConnection().

◆ setDSMConfig()

void nidas::core::SampleOutputBase::setDSMConfig ( const DSMConfig * val)
inlinevirtual

◆ setHeaderSource()

void nidas::core::SampleOutputBase::setHeaderSource ( HeaderSource * val)
inlinevirtual

◆ setIOChannel()

void SampleOutputBase::setIOChannel ( IOChannel * val)
virtual

◆ setLatency()

void nidas::core::SampleOutputBase::setLatency ( float val)
inlinevirtual

Set desired latency, providing some control over the response time vs buffer efficiency tradeoff.

Setting a latency of 1/10 sec means buffer data in the IOStream for a 1/10 sec, then send the data to the physical device.

Parameters
valLatency, in seconds.
Exceptions
nidas::util::InvalidParameterException

Implements nidas::core::SampleOutput.

Reimplemented in nidas::dynld::SampleOutputStream.

References _latency, and nidas::core::getSample().

Referenced by fromDOMElement(), and nidas::dynld::SampleOutputStream::setLatency().

◆ setName()

void nidas::core::SampleOutputBase::setName ( const std::string & val)
inlinevirtual

◆ setReconnectDelaySecs()

void SampleOutputBase::setReconnectDelaySecs ( int val)
virtual

◆ setTimeClippingWindow()

void SampleOutputBase::setTimeClippingWindow ( const nidas::util::UTime & startTime,
const nidas::util::UTime & endTime )

The sample output can have a time window which clips the samples outside the window.

Only samples at or after startTime and before endTime will be passed along. One or both of start and end time can be zero, in which case only the non-zero times are used to clip samples.

References _endTime, _startTime, and nidas::util::UTime::toUsecs().

Referenced by nidas::core::NidasApp::setOutputClipping().

◆ 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.

◆ write()

size_t SampleOutputBase::write ( const void * buf,
size_t len )
virtual

Raw write method, typically used to write the initial header.

Exceptions
nidas::util::IOException

Implements nidas::core::SampleOutput.

References _iochan, nidas::core::getSample(), len, and nidas::core::IOChannel::write().

Member Data Documentation

◆ _connectionRequester

SampleConnectionRequester* nidas::core::SampleOutputBase::_connectionRequester
private

◆ _constParameters

std::list<const Parameter*> nidas::core::SampleOutputBase::_constParameters
private

List of const pointers to Parameters for providing via getParameters().

Referenced by addParameter(), and getParameters().

◆ _constRequestedTags

std::list<const SampleTag*> nidas::core::SampleOutputBase::_constRequestedTags
private

◆ _dsm

const DSMConfig* nidas::core::SampleOutputBase::_dsm
private

Referenced by getDSMConfig(), and setDSMConfig().

◆ _endTime

dsm_time_t nidas::core::SampleOutputBase::_endTime
private

Referenced by receive(), and setTimeClippingWindow().

◆ _headerSource

HeaderSource* nidas::core::SampleOutputBase::_headerSource
private

Referenced by createNextFile(), and setHeaderSource().

◆ _iochan

IOChannel* nidas::core::SampleOutputBase::_iochan
private

◆ _latency

float nidas::core::SampleOutputBase::_latency
private

Referenced by getLatency(), and setLatency().

◆ _name

std::string nidas::core::SampleOutputBase::_name
protected

Referenced by getName(), and setName().

◆ _nextFileTime

dsm_time_t nidas::core::SampleOutputBase::_nextFileTime
private

◆ _nsamplesDiscarded

size_t nidas::core::SampleOutputBase::_nsamplesDiscarded
private

◆ _original

SampleOutput* nidas::core::SampleOutputBase::_original
private

Pointer to the SampleOutput that I was cloned from.

Referenced by getOriginal().

◆ _parameters

std::map<std::string,Parameter*> nidas::core::SampleOutputBase::_parameters
private

Map of parameters by name.

Referenced by addParameter(), getParameter(), and ~SampleOutputBase().

◆ _reconnectDelaySecs

int nidas::core::SampleOutputBase::_reconnectDelaySecs
private

◆ _requestedTags

std::list<SampleTag*> nidas::core::SampleOutputBase::_requestedTags
private

◆ _sourceTags

std::list<const SampleTag*> nidas::core::SampleOutputBase::_sourceTags
private

◆ _startTime

dsm_time_t nidas::core::SampleOutputBase::_startTime
private

Clipping time window.

Samples outside the given time window will not pass.

Referenced by receive(), and setTimeClippingWindow().

◆ _tagsMutex

nidas::util::Mutex nidas::core::SampleOutputBase::_tagsMutex
mutableprivate

◆ namespaceURI

XMLCh * DOMable::namespaceURI = 0
staticprivateinherited

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