nidas v1.2.3
Public Types | 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::AsciiOutput Class Reference

#include <AsciiOutput.h>

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

Public Types

enum  format {
  DEFAULT , ASCII , HEX , SIGNED_SHORT ,
  UNSIGNED_SHORT , FLOAT , IRIG
}
 
typedef enum nidas::dynld::AsciiOutput::format format_t
 

Public Member Functions

 AsciiOutput ()
 
 AsciiOutput (IOChannel *iochannel, SampleConnectionRequester *rqstr=0)
 
virtual ~AsciiOutput ()
 
void flush () throw ()
 Implementation of SampleClient::flush().
 
void requestConnection (SampleConnectionRequester *requester) throw ()
 Request a connection, of this SampleOutput, but don't wait for it.
 
void connect (nidas::core::SampleSource *)
 
void setFormat (format_t val)
 Set the format for character samples.
 
bool receive (const Sample *samp)
 
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
 
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.
 
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

AsciiOutputclone (IOChannel *iochannel)
 
 AsciiOutput (AsciiOutput &, IOChannel *)
 Copy constructor, with a new IOChannel.
 
void printHeader ()
 
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.
 

Protected Attributes

std::string _name
 

Private Member Functions

 AsciiOutput (const AsciiOutput &)
 Copy constructor.
 

Private Attributes

std::ostringstream _ostr
 
format_t _format
 
std::map< dsm_sample_id_t, dsm_time_t_prevTT
 Previous time tags by sample id.
 
bool _headerOut
 
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
 

Member Typedef Documentation

◆ format_t

Member Enumeration Documentation

◆ format

Enumerator
DEFAULT 
ASCII 
HEX 
SIGNED_SHORT 
UNSIGNED_SHORT 
FLOAT 
IRIG 

Constructor & Destructor Documentation

◆ AsciiOutput() [1/4]

AsciiOutput::AsciiOutput ( )

Referenced by clone().

◆ AsciiOutput() [2/4]

AsciiOutput::AsciiOutput ( IOChannel * iochannel,
SampleConnectionRequester * rqstr = 0 )

◆ ~AsciiOutput()

virtual nidas::dynld::AsciiOutput::~AsciiOutput ( )
inlinevirtual

◆ AsciiOutput() [3/4]

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

◆ AsciiOutput() [4/4]

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

Copy constructor.

Member Function Documentation

◆ addParameter()

void SampleOutputBase::addParameter ( Parameter * val)
inherited

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

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

◆ addRequestedSampleTag()

void SampleOutputBase::addRequestedSampleTag ( SampleTag * tag)
virtualinherited

◆ addSourceSampleTag()

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

◆ addSourceSampleTags()

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

◆ clone()

AsciiOutput * AsciiOutput::clone ( IOChannel * iochannel)
protectedvirtual

Implements nidas::core::SampleOutput.

References AsciiOutput().

◆ close()

void SampleOutputBase::close ( )
virtualinherited

◆ connect()

void AsciiOutput::connect ( nidas::core::SampleSource * source)

◆ connected()

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

◆ createNextFile()

void SampleOutputBase::createNextFile ( dsm_time_t tt)
inherited

◆ disconnect()

void SampleOutputBase::disconnect ( )
protectedinherited

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 nidas::core::SampleOutputBase::_connectionRequester, nidas::core::SampleOutputBase::close(), nidas::core::SampleConnectionRequester::disconnect(), nidas::core::SampleOutputBase::getName(), nidas::core::getSample(), and ILOG.

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

◆ flush()

void nidas::dynld::AsciiOutput::flush ( )
throw ( )
inlinevirtual

Implementation of SampleClient::flush().

Implements nidas::core::SampleClient.

◆ fromDOMElement()

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

◆ getDSMConfig()

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

◆ getFd()

int SampleOutputBase::getFd ( ) const
virtualinherited

◆ getIOChannel()

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

◆ getLatency()

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

◆ getName()

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

◆ getNamespaceURI()

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

◆ getNextFileTime()

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

◆ getNumDiscardedSamples()

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

◆ getOriginal()

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

Get pointer to SampleOutput that was cloned.

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

Implements nidas::core::SampleOutput.

References nidas::core::SampleOutputBase::_original.

◆ getParameter()

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

Fetch a parameter by name.

Returns a NULL pointer if no such parameter exists.

References nidas::core::SampleOutputBase::_parameters.

◆ getParameters()

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

◆ getReconnectDelaySecs()

int SampleOutputBase::getReconnectDelaySecs ( ) const
virtualinherited

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 nidas::core::SampleOutputBase::_iochan, nidas::core::SampleOutputBase::_reconnectDelaySecs, and nidas::core::IOChannel::getReconnectDelaySecs().

◆ getRequestedSampleTags()

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

◆ getSampleConnectionRequester()

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

◆ getSourceSampleTags()

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

◆ incrementDiscardedSamples()

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

◆ isRaw()

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

◆ printHeader()

void AsciiOutput::printHeader ( )
protected

◆ receive()

bool AsciiOutput::receive ( const Sample * samp)
virtual

◆ requestConnection()

void AsciiOutput::requestConnection ( SampleConnectionRequester * )
throw ( )
virtual

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

The SampleConnectionRequester will be notified via a call back to SampleConnectionRequester::connected(SampleOutput*,SampleOutput*) where the first SampleOutput points to the SampleOutput of the original request, and the second is often a new instance of a SampleOutput with a new IOChannel connection. Or the two pointers may point to the same SampleOutput.

Exceptions
nidas::util::IOException

Implements nidas::core::SampleOutput.

References nidas::core::SampleOutputBase::requestConnection().

◆ setDSMConfig()

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

◆ setFormat()

void nidas::dynld::AsciiOutput::setFormat ( format_t val)
inline

Set the format for character samples.

Raw sensor samples are character samples.

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

◆ setHeaderSource()

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

◆ setIOChannel()

void SampleOutputBase::setIOChannel ( IOChannel * val)
virtualinherited

Set the IOChannel for this SampleOutput.

This IOChannel is not yet connected. The IOChannel must be connected before the SampleOutput is used for I/O, using the requestConnection() method, or by IOChannel::connect() followed by SampleOutput::connected(IOChannel*).

Reimplemented in nidas::dynld::raf::CVIOutput.

References nidas::core::SampleOutputBase::_iochan, nidas::core::SampleOutputBase::getDSMConfig(), nidas::core::getSample(), and nidas::core::IOChannel::setDSMConfig().

Referenced by connect(), nidas::core::SampleOutputBase::connected(), nidas::core::SampleOutputBase::fromDOMElement(), and nidas::dynld::raf::CVIOutput::setIOChannel().

◆ setLatency()

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

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

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

◆ setName()

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

◆ setReconnectDelaySecs()

void SampleOutputBase::setReconnectDelaySecs ( int val)
virtualinherited

◆ setTimeClippingWindow()

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

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 nidas::core::SampleOutputBase::_endTime, nidas::core::SampleOutputBase::_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 )
virtualinherited

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

Exceptions
nidas::util::IOException

Implements nidas::core::SampleOutput.

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

Member Data Documentation

◆ _connectionRequester

SampleConnectionRequester* nidas::core::SampleOutputBase::_connectionRequester
privateinherited

◆ _constParameters

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

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

Referenced by nidas::core::SampleOutputBase::addParameter(), and nidas::core::SampleOutputBase::getParameters().

◆ _constRequestedTags

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

◆ _dsm

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

◆ _endTime

dsm_time_t nidas::core::SampleOutputBase::_endTime
privateinherited

◆ _format

format_t nidas::dynld::AsciiOutput::_format
private

Referenced by receive(), and setFormat().

◆ _headerOut

bool nidas::dynld::AsciiOutput::_headerOut
private

Referenced by printHeader(), and receive().

◆ _headerSource

HeaderSource* nidas::core::SampleOutputBase::_headerSource
privateinherited

◆ _iochan

IOChannel* nidas::core::SampleOutputBase::_iochan
privateinherited

◆ _latency

float nidas::core::SampleOutputBase::_latency
privateinherited

◆ _name

std::string nidas::core::SampleOutputBase::_name
protectedinherited

◆ _nextFileTime

dsm_time_t nidas::core::SampleOutputBase::_nextFileTime
privateinherited

◆ _nsamplesDiscarded

size_t nidas::core::SampleOutputBase::_nsamplesDiscarded
privateinherited

◆ _original

SampleOutput* nidas::core::SampleOutputBase::_original
privateinherited

Pointer to the SampleOutput that I was cloned from.

Referenced by nidas::core::SampleOutputBase::getOriginal().

◆ _ostr

std::ostringstream nidas::dynld::AsciiOutput::_ostr
private

Referenced by printHeader(), and receive().

◆ _parameters

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

◆ _prevTT

std::map<dsm_sample_id_t,dsm_time_t> nidas::dynld::AsciiOutput::_prevTT
private

Previous time tags by sample id.

Used for displaying time diffs.

Referenced by receive().

◆ _reconnectDelaySecs

int nidas::core::SampleOutputBase::_reconnectDelaySecs
privateinherited

◆ _requestedTags

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

◆ _sourceTags

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

◆ _startTime

dsm_time_t nidas::core::SampleOutputBase::_startTime
privateinherited

Clipping time window.

Samples outside the given time window will not pass.

Referenced by nidas::core::SampleOutputBase::receive(), and nidas::core::SampleOutputBase::setTimeClippingWindow().

◆ _tagsMutex

nidas::util::Mutex nidas::core::SampleOutputBase::_tagsMutex
mutableprivateinherited

◆ namespaceURI

XMLCh * DOMable::namespaceURI = 0
staticprivateinherited

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