27 #ifndef NIDAS_CORE_SAMPLEOUTPUT_H
28 #define NIDAS_CORE_SAMPLEOUTPUT_H
39 namespace nidas {
namespace core {
59 virtual void setName(
const std::string& val) = 0;
61 virtual const std::string&
getName()
const = 0;
63 virtual bool isRaw()
const = 0;
101 throw(nidas::util::IOException) = 0;
114 virtual
int getFd() const = 0;
122 virtual
size_t write(const
void* buf,
size_t len)
123 throw(nidas::util::IOException) = 0;
125 virtual
void close() throw(nidas::util::IOException) = 0;
134 throw(nidas::util::InvalidParameterException) = 0;
170 virtual void setIOChannel(
IOChannel* val);
177 void setName(
const std::string& val) { _name = val; }
179 const std::string&
getName()
const {
return _name; }
181 bool isRaw()
const {
return false; }
203 throw(nidas::util::IOException);
225 void close() throw(nidas::util::IOException);
229 void createNextFile(
dsm_time_t) throw(nidas::util::IOException);
235 size_t write(const
void* buf,
size_t len)
236 throw(nidas::util::IOException) override;
239 throw(nidas::util::InvalidParameterException);
273 return _constParameters;
280 const Parameter* getParameter(
const std::string& name)
const;
308 return _connectionRequester;
324 void disconnect() throw(nidas::util::IOException);
328 mutable nidas::util::Mutex _tagsMutex;
344 size_t _nsamplesDiscarded;
362 SampleOutput* _original;
366 int _reconnectDelaySecs;
376 SampleOutputBase& operator=(const SampleOutputBase&);
Interface for an object that requests connections SampleOutputs.
Definition: ConnectionRequester.h:42
virtual void setName(const std::string &val)=0
virtual ~SampleOutput()
Definition: SampleOutput.h:51
virtual void setDSMConfig(const DSMConfig *val)=0
virtual std::list< const SampleTag * > getRequestedSampleTags() const =0
const std::string & getName() const
Definition: SampleOutput.h:179
virtual SampleOutput * clone(IOChannel *iochannel)=0
virtual int getReconnectDelaySecs() const =0
Derived classes implement this to indicate whether a connection should be requested again if one fail...
virtual void fromDOMElement(const xercesc::DOMElement *)=0
Initialize myself from a xercesc::DOMElement.
const DSMConfig * getDSMConfig() const
Definition: SampleOutput.h:253
virtual void requestConnection(SampleConnectionRequester *)=0
Request a connection, of this SampleOutput, but don't wait for it.
virtual std::list< const SampleTag * > getSourceSampleTags() const =0
std::string _name
Definition: SampleOutput.h:311
void setName(const std::string &val)
Definition: SampleOutput.h:177
float getLatency() const
Definition: SampleOutput.h:296
virtual IOChannelRequester * connected(IOChannel *)=0
Interface of an output stream of samples.
Definition: SampleOutput.h:47
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:61
Class that should include all that is configurable about a DSM.
Definition: DSMConfig.h:55
virtual void addRequestedSampleTag(SampleTag *tag)=0
Some SampleOutputs don't send out all the Samples that they receive.
Interface of an object that can be instantiated from a DOM element, via the fromDOMElement method...
Definition: DOMable.h:51
Implementation of portions of SampleOutput.
Definition: SampleOutput.h:147
virtual const DSMConfig * getDSMConfig() const =0
SampleOutput * getOriginal() const
Get pointer to SampleOutput that was cloned.
Definition: SampleOutput.h:172
Pure virtual interface of a client of Samples.
Definition: SampleClient.h:38
void setHeaderSource(HeaderSource *val)
Definition: SampleOutput.h:243
virtual float getLatency() const =0
virtual void addSourceSampleTags(const std::list< const SampleTag * > &tags)=0
A channel for Input or Output of data.
Definition: IOChannel.h:64
virtual void setLatency(float val)=0
void setLatency(float val)
Set desired latency, providing some control over the response time vs buffer efficiency tradeoff...
Definition: SampleOutput.h:290
virtual void setReconnectDelaySecs(int val)=0
virtual SampleOutput * getOriginal() const =0
Get pointer to SampleOutput that was cloned.
virtual size_t write(const void *buf, size_t len)=0
Plain raw write, typically only used to write an initial header.
SampleConnectionRequester * getSampleConnectionRequester()
Definition: SampleOutput.h:306
virtual IOChannel * getIOChannel() const =0
size_t incrementDiscardedSamples()
Definition: SampleOutput.h:304
int len
Definition: sing.cc:934
Definition: Parameter.h:46
virtual bool isRaw() const =0
virtual int getFd() const =0
virtual const std::string & getName() const =0
Class describing a group of variables that are sampled and handled together.
Definition: SampleTag.h:87
virtual void addSourceSampleTag(const SampleTag *tag)=0
Some SampleOutputs like to be informed of what SampleTags they will be receiving from their SampleSou...
virtual void setHeaderSource(HeaderSource *val)=0
bool isRaw() const
Definition: SampleOutput.h:181
const std::list< const Parameter * > & getParameters() const
Get list of parameters.
Definition: SampleOutput.h:271
void setDSMConfig(const DSMConfig *val)
Definition: SampleOutput.h:248
Interface for an object that requests connections to Inputs or Outputs.
Definition: IOChannel.h:54
Definition: InvalidParameterException.h:35
size_t getNumDiscardedSamples() const
Definition: SampleOutput.h:258