27#ifndef NIDAS_CORE_SAMPLEOUTPUT_H
28#define NIDAS_CORE_SAMPLEOUTPUT_H
40namespace nidas {
namespace core {
60 virtual void setName(
const std::string& val) = 0;
62 virtual const std::string&
getName()
const = 0;
130 virtual size_t write(
const void* buf,
size_t len) = 0;
193 bool isRaw()
const {
return false; }
262 size_t write(
const void* buf,
size_t len);
Interface of an object that can be instantiated from a DOM element, via the fromDOMElement method,...
Definition DOMable.h:51
Class that should include all that is configurable about a DSM.
Definition DSMConfig.h:55
Interface for an object that requests connections to Inputs or Outputs.
Definition IOChannel.h:56
A channel for Input or Output of data.
Definition IOChannel.h:65
Definition Parameter.h:47
Pure virtual interface of a client of Samples.
Definition SampleClient.h:38
Interface for an object that requests connections SampleOutputs.
Definition ConnectionRequester.h:43
Implementation of portions of SampleOutput.
Definition SampleOutput.h:160
bool receive(const Sample *s)
Return true if SampleOutputBase considers the sample handled, such as if it is outside the clipping w...
Definition SampleOutput.cc:381
void fromDOMElement(const xercesc::DOMElement *node)
Definition SampleOutput.cc:303
void requestConnection(SampleConnectionRequester *)
Request a connection, but don't wait for it.
Definition SampleOutput.cc:193
IOChannel * _iochan
Definition SampleOutput.h:383
virtual void setIOChannel(IOChannel *val)
Set the IOChannel for this SampleOutput.
Definition SampleOutput.cc:184
int getFd() const
Definition SampleOutput.cc:178
void setReconnectDelaySecs(int val)
Definition SampleOutput.cc:123
SampleConnectionRequester * getSampleConnectionRequester()
Definition SampleOutput.h:353
int getReconnectDelaySecs() const
Base class implementation.
Definition SampleOutput.cc:116
SampleOutputBase & operator=(const SampleOutputBase &)
No assignment.
void addRequestedSampleTag(SampleTag *tag)
Definition SampleOutput.cc:128
void setName(const std::string &val)
Definition SampleOutput.h:189
std::list< SampleTag * > _requestedTags
Definition SampleOutput.h:379
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.
Definition SampleOutput.cc:394
std::list< const SampleTag * > getSourceSampleTags() const
Definition SampleOutput.cc:163
size_t _nsamplesDiscarded
Definition SampleOutput.h:393
IOChannel * getIOChannel() const
Definition SampleOutput.h:269
dsm_time_t getNextFileTime() const
Definition SampleOutput.h:249
HeaderSource * _headerSource
Definition SampleOutput.h:389
std::map< std::string, Parameter * > _parameters
Map of parameters by name.
Definition SampleOutput.h:398
SampleOutput * connected(IOChannel *ochan)
Implementation of IOChannelRequester::connected().
Definition SampleOutput.cc:203
int _reconnectDelaySecs
Definition SampleOutput.h:415
std::list< const SampleTag * > _sourceTags
Definition SampleOutput.h:406
void setHeaderSource(HeaderSource *val)
Definition SampleOutput.h:271
std::list< const SampleTag * > _constRequestedTags
Definition SampleOutput.h:381
SampleConnectionRequester * _connectionRequester
Definition SampleOutput.h:385
float getLatency() const
Definition SampleOutput.h:325
nidas::util::Mutex _tagsMutex
Definition SampleOutput.h:377
void createNextFile(dsm_time_t)
Definition SampleOutput.cc:276
const DSMConfig * _dsm
Definition SampleOutput.h:391
const std::list< const Parameter * > & getParameters() const
Get list of parameters.
Definition SampleOutput.h:299
dsm_time_t _endTime
Definition SampleOutput.h:422
void close()
Definition SampleOutput.cc:169
void setLatency(float val)
Set desired latency, providing some control over the response time vs buffer efficiency tradeoff.
Definition SampleOutput.h:320
const DSMConfig * getDSMConfig() const
Definition SampleOutput.h:281
size_t write(const void *buf, size_t len)
Raw write method, typically used to write the initial header.
Definition SampleOutput.cc:289
bool isRaw() const
Definition SampleOutput.h:193
void setDSMConfig(const DSMConfig *val)
Definition SampleOutput.h:276
~SampleOutputBase()
Definition SampleOutput.cc:99
const Parameter * getParameter(const std::string &name) const
Fetch a parameter by name.
Definition SampleOutput.cc:269
SampleOutput * _original
Pointer to the SampleOutput that I was cloned from.
Definition SampleOutput.h:411
SampleOutput * getOriginal() const
Get pointer to SampleOutput that was cloned.
Definition SampleOutput.h:184
size_t incrementDiscardedSamples()
Definition SampleOutput.h:351
SampleOutputBase(const SampleOutputBase &)
No copy.
std::list< const SampleTag * > getRequestedSampleTags() const
Definition SampleOutput.cc:138
void addSourceSampleTag(const SampleTag *tag)
Definition SampleOutput.cc:144
size_t getNumDiscardedSamples() const
Definition SampleOutput.h:286
void disconnect()
Close the IOChannel and notify whoever did the requestConnection that it is time to disconnect,...
Definition SampleOutput.cc:230
float _latency
Definition SampleOutput.h:413
std::string _name
Definition SampleOutput.h:358
dsm_time_t _startTime
Clipping time window.
Definition SampleOutput.h:421
std::list< const Parameter * > _constParameters
List of const pointers to Parameters for providing via getParameters().
Definition SampleOutput.h:404
dsm_time_t _nextFileTime
Definition SampleOutput.h:387
const std::string & getName() const
Definition SampleOutput.h:191
void addParameter(Parameter *val)
Add a parameter to this DSMSensor.
Definition SampleOutput.cc:244
void addSourceSampleTags(const std::list< const SampleTag * > &tags)
Definition SampleOutput.cc:151
SampleOutputBase()
Definition SampleOutput.cc:42
Interface of an output stream of samples.
Definition SampleOutput.h:49
virtual int getReconnectDelaySecs() const =0
Derived classes implement this to indicate whether a connection should be requested again if one fail...
virtual int getFd() const =0
virtual IOChannel * getIOChannel() const =0
virtual const DSMConfig * getDSMConfig() const =0
virtual void setLatency(float val)=0
virtual void addSourceSampleTags(const std::list< const SampleTag * > &tags)=0
virtual void setName(const std::string &val)=0
virtual std::list< const SampleTag * > getRequestedSampleTags() const =0
virtual const std::string & getName() const =0
virtual std::list< const SampleTag * > getSourceSampleTags() const =0
virtual void addRequestedSampleTag(SampleTag *tag)=0
Some SampleOutputs don't send out all the Samples that they receive.
virtual void setHeaderSource(HeaderSource *val)=0
virtual float getLatency() const =0
virtual void setDSMConfig(const DSMConfig *val)=0
virtual bool isRaw() const =0
virtual SampleOutput * getOriginal() const =0
Get pointer to SampleOutput that was cloned.
virtual void requestConnection(SampleConnectionRequester *)=0
Request a connection, of this SampleOutput, but don't wait for it.
virtual ~SampleOutput()
Definition SampleOutput.h:52
virtual void addSourceSampleTag(const SampleTag *tag)=0
Some SampleOutputs like to be informed of what SampleTags they will be receiving from their SampleSou...
virtual SampleOutput * clone(IOChannel *iochannel)=0
virtual size_t write(const void *buf, size_t len)=0
Plain raw write, typically only used to write an initial header.
virtual void setReconnectDelaySecs(int val)=0
Class describing a group of variables that are sampled and handled together.
Definition SampleTag.h:88
Interface to a data sample.
Definition Sample.h:190
A C++ wrapper for a POSIX mutex.
Definition ThreadSupport.h:161
A class for parsing, formatting and doing operations on time, based on Unix time conventions,...
Definition UTime.h:95
Sample * getSample(sampleType type, unsigned int len)
A convienence method for getting a sample of an enumerated type from a pool.
Definition Sample.cc:70
long long dsm_time_t
Posix time in microseconds, the number of non-leap microseconds since 1970 Jan 1 00:00 UTC.
Definition Sample.h:62
Root namespace for the NCAR In-Situ Data Acquisition Software.
Definition A2DConverter.h:31
int len
Definition sing.cc:948