nidas  v1.2-1520
Public Member Functions | Protected Attributes | Private Attributes | List of all members
nidas::core::DatagramSampleScanner Class Reference

#include <SampleScanner.h>

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

Public Member Functions

 DatagramSampleScanner (int bufsize=16384)
 
void setMessageParameters (unsigned int, const std::string &, bool) throw (nidas::util::InvalidParameterException)
 setMessageSeparator is not implemented in DatagramSampleScanner. More...
 
size_t readBuffer (DSMSensor *sensor, bool &exhausted) throw (nidas::util::IOException)
 Read from the sensor into the internal buffer of this SampleScanner. More...
 
SamplenextSample (DSMSensor *sensor)
 Extract the next sample from the buffer. More...
 
void setNullTerminate (bool val)
 User of DatagramSampleScanner should specify if they want the samples to be null terminated. More...
 
bool getNullTerminate () const
 Should the SampleScanner append a null character, '\0', to the messages. More...
 
virtual void init ()
 Initialize the scanner. More...
 
virtual const std::string & getMessageSeparator () const
 Returns an empty string. More...
 
virtual const std::string getBackslashedMessageSeparator () const
 Returns an empty string. More...
 
virtual bool getMessageSeparatorAtEOM () const
 
virtual unsigned int getMessageLength () const
 Returns 0. More...
 
void setUsecsPerByte (int val)
 
int getUsecsPerByte () const
 
virtual size_t readBuffer (DSMSensor *sensor, bool &exhausted, int msecTimeout) throw (nidas::util::IOException)
 Read from the sensor into the internal buffer of this SampleScanner, providing a timeout in milliseconds. More...
 
virtual void clearBuffer ()
 
unsigned int getBytesInBuffer () const
 
virtual void resetStatistics ()
 
virtual void calcStatistics (unsigned int periodUsec)
 Update the sensor sampling statistics: samples/sec, bytes/sec, min/max sample size, that can be accessed via getObservedSamplingRate(), getObservedDataRate() etc. More...
 
unsigned int getMaxSampleLength () const
 
unsigned int getMinSampleLength () const
 
unsigned int getBadTimeTagCount () const
 
float getObservedSamplingRate () const
 
float getObservedDataRate () const
 
void addNumBytesToStats (size_t val)
 
void addSampleToStats (unsigned int val)
 
void incrementBadTimeTags ()
 

Protected Attributes

const unsigned int BUFSIZE
 Buffer size for reading from sensor. More...
 
char * _buffer
 
unsigned int _bufhead
 
unsigned int _buftail
 
Sample_osamp
 
struct dsm_sample _header
 
unsigned int _outSampRead
 
unsigned int _outSampToRead
 
char * _outSampDataPtr
 
std::string _messageSeparator
 
int _messageLength
 
bool _separatorAtEOM
 
char * _separator
 messageSeparator in a C string. More...
 
int _separatorLen
 Length of messageSeparator. More...
 

Private Attributes

std::list< int > _packetLengths
 
std::list< dsm_time_t_packetTimes
 
bool _nullTerminate
 

Constructor & Destructor Documentation

DatagramSampleScanner::DatagramSampleScanner ( int  bufsize = 16384)

Member Function Documentation

void nidas::core::SampleScanner::addNumBytesToStats ( size_t  val)
inlineinherited
void nidas::core::SampleScanner::addSampleToStats ( unsigned int  val)
inlineinherited
void SampleScanner::calcStatistics ( unsigned int  periodUsec)
virtualinherited
void SampleScanner::clearBuffer ( )
virtualinherited
virtual const std::string nidas::core::SampleScanner::getBackslashedMessageSeparator ( ) const
inlinevirtualinherited
unsigned int nidas::core::SampleScanner::getBadTimeTagCount ( ) const
inlineinherited
unsigned int nidas::core::SampleScanner::getBytesInBuffer ( ) const
inlineinherited
unsigned int nidas::core::SampleScanner::getMaxSampleLength ( ) const
inlineinherited
virtual unsigned int nidas::core::SampleScanner::getMessageLength ( ) const
inlinevirtualinherited
virtual const std::string& nidas::core::SampleScanner::getMessageSeparator ( ) const
inlinevirtualinherited
virtual bool nidas::core::SampleScanner::getMessageSeparatorAtEOM ( ) const
inlinevirtualinherited
unsigned int nidas::core::SampleScanner::getMinSampleLength ( ) const
inlineinherited
bool nidas::core::DatagramSampleScanner::getNullTerminate ( ) const
inlinevirtual

Should the SampleScanner append a null character, '\0', to the messages.

Reimplemented from nidas::core::SampleScanner.

References _nullTerminate.

Referenced by nextSample().

float SampleScanner::getObservedDataRate ( ) const
inherited
float SampleScanner::getObservedSamplingRate ( ) const
inherited
int nidas::core::SampleScanner::getUsecsPerByte ( ) const
inlineinherited
void nidas::core::SampleScanner::incrementBadTimeTags ( )
inlineinherited
void SampleScanner::init ( )
virtualinherited

Initialize the scanner.

Must be called by a user of SampleScanner prior to calling readSamples().

References nidas::core::SampleScanner::resetStatistics().

Sample * DatagramSampleScanner::nextSample ( DSMSensor sensor)
virtual
size_t SampleScanner::readBuffer ( DSMSensor sensor,
bool &  exhausted,
int  msecTimeout 
)
throw (nidas::util::IOException
)
virtualinherited

Read from the sensor into the internal buffer of this SampleScanner, providing a timeout in milliseconds.

This will throw nidas::util::IOTimeoutException if the read fails due to a timeout.

Reimplemented in nidas::core::MessageStreamScanner.

References MSECS_PER_SEC, NLOG, NSECS_PER_MSEC, and nidas::core::SampleScanner::readBuffer().

size_t DatagramSampleScanner::readBuffer ( DSMSensor sensor,
bool &  exhausted 
)
throw (nidas::util::IOException
)
virtual

Read from the sensor into the internal buffer of this SampleScanner.

Reimplemented from nidas::core::SampleScanner.

References nidas::util::Logger::getInstance(), nidas::util::getSystemTime(), len, nidas::util::Logger::log(), and LOG_WARNING.

void SampleScanner::resetStatistics ( )
virtualinherited
void nidas::core::DatagramSampleScanner::setMessageParameters ( unsigned int  ,
const std::string &  ,
bool   
)
throw (nidas::util::InvalidParameterException
)
inlinevirtual

setMessageSeparator is not implemented in DatagramSampleScanner.

Throws nidas::util::InvalidParameterException.

Implements nidas::core::SampleScanner.

void nidas::core::DatagramSampleScanner::setNullTerminate ( bool  val)
inline

User of DatagramSampleScanner should specify if they want the samples to be null terminated.

In general, if this SampleScanner is used by a CharacterSensor with a scanfFormat defined for one or more samples, then the samples should be null terminated.

References _nullTerminate.

Referenced by nidas::dynld::raf::PHIPS_UDP::buildSampleScanner(), nidas::dynld::UDPSocketSensor::buildSampleScanner(), and nidas::core::CharacterSensor::buildSampleScanner().

void nidas::core::SampleScanner::setUsecsPerByte ( int  val)
inlineinherited

Member Data Documentation

char* nidas::core::SampleScanner::_buffer
protectedinherited
unsigned int nidas::core::SampleScanner::_bufhead
protectedinherited
unsigned int nidas::core::SampleScanner::_buftail
protectedinherited
struct dsm_sample nidas::core::SampleScanner::_header
protectedinherited
int nidas::core::SampleScanner::_messageLength
protectedinherited
std::string nidas::core::SampleScanner::_messageSeparator
protectedinherited
bool nidas::core::DatagramSampleScanner::_nullTerminate
private
Sample* nidas::core::SampleScanner::_osamp
protectedinherited
char* nidas::core::SampleScanner::_outSampDataPtr
protectedinherited
unsigned int nidas::core::SampleScanner::_outSampRead
protectedinherited
unsigned int nidas::core::SampleScanner::_outSampToRead
protectedinherited
std::list<int> nidas::core::DatagramSampleScanner::_packetLengths
private

Referenced by nextSample().

std::list<dsm_time_t> nidas::core::DatagramSampleScanner::_packetTimes
private

Referenced by nextSample().

char* nidas::core::SampleScanner::_separator
protectedinherited
bool nidas::core::SampleScanner::_separatorAtEOM
protectedinherited
int nidas::core::SampleScanner::_separatorLen
protectedinherited
const unsigned int nidas::core::SampleScanner::BUFSIZE
protectedinherited

Buffer size for reading from sensor.


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