DynExp
Highly flexible laboratory automation for dynamically changing experiments.
DynExpInstr::BasicSampleStream Class Reference

Implements a circular data stream based on Util::circularbuf using samples of type BasicSample. More...

+ Inheritance diagram for DynExpInstr::BasicSampleStream:

Public Member Functions

 BasicSampleStream (size_t BufferSizeInSamples)
 Constructs a BasicSampleStream instance. More...
 
virtual ~BasicSampleStream ()=default
 
bool IsBasicSampleConvertible () const noexcept override final
 Determines whether the data stream holds samples which are compatible to BasicSample. More...
 
bool IsBasicSampleTimeUsed () const noexcept override final
 Determines whether the data stream holds basic samples (IsBasicSampleConvertible() returns true) which contain information in their BasicSample::Time fields. More...
 
- Public Member Functions inherited from DynExpInstr::CircularDataStream< BasicSample >
 CircularDataStream (size_t BufferSizeInSamples)
 Constructs a CircularDataStream instance. More...
 
virtual ~CircularDataStream ()=default
 
constexpr auto GetBytesPerSample () noexcept
 Determines the size of a single sample in bytes. More...
 
size_t GetNumAvailableSamplesToReadTillEnd () const noexcept override
 Determines the amount of samples which can be read from the stream's current get pointer position till the stream's end. More...
 
size_t GetNumFreeSamplesToWrite () const noexcept override
 Determines the amount of samples which can be written to the stream untill the stream's end is reached. More...
 
std::streampos GetReadPosition () const noexcept override
 Determines the current position of the stream's read (get) pointer in samples. More...
 
std::streampos GetWritePosition () const noexcept override
 Determines the current position of the stream's write (put) pointer in samples. More...
 
virtual bool SeekRel (signed long long OffsetInSamples, std::ios_base::seekdir SeekDir, std::ios_base::openmode Which=std::ios_base::in|std::ios_base::out) override
 Moves the stream's read/write pointer(s) to a position relative to SeekDir. More...
 
virtual bool SeekAbs (unsigned long long PositionInSamples, std::ios_base::openmode Which=std::ios_base::in|std::ios_base::out) override
 Moves the stream's read/write pointer(s) to an absolute position. More...
 
virtual void SeekBeg (std::ios_base::openmode Which=std::ios_base::in|std::ios_base::out) override
 Moves the read/write pointer to the first sample in the stream. More...
 
virtual void SeekEnd (std::ios_base::openmode Which=std::ios_base::in|std::ios_base::out) override
 Moves the read pointer to the last sample in the stream and/or moves the write pointer after the last written sample in the stream. More...
 
virtual bool SeekEqual (std::ios_base::openmode Which=std::ios_base::in|std::ios_base::out) override
 Moves the read/write pointer to the respective other one. More...
 
virtual size_t GetStreamSizeRead () const noexcept override
 Determines the stream's read buffer size in samples. More...
 
virtual size_t GetStreamSizeWrite () const noexcept override
 Determines the stream's write buffer size in samples. More...
 
virtual size_t GetNumSamplesWritten () const noexcept override
 Determines the number of samples which have been written to the stream in total. Before overflowing, this function should keep continuing to return the largest possible value. More...
 
virtual void SetStreamSize (size_t BufferSizeInSamples) override
 Sets the stream size in samples. More...
 
void WriteSample (const BasicSample &Sample)
 Writes a single sample to the stream's buffer StreamBuffer. More...
 
void WriteSample (const std::chrono::duration< Rep, Period > &Sample)
 Writes a single sample to the stream's buffer StreamBuffer by implicitly constructing the sample from a std::chrono::duration instance. More...
 
BasicSample ReadSample ()
 Reads a single sample from the stream's buffer StreamBuffer. More...
 
void WriteSamples (const std::vector< T > &Samples)
 Writes multiple samples to the stream's buffer StreamBuffer. More...
 
std::vector< BasicSampleReadSamples (size_t Count)
 Reads multiple samples from the stream's buffer StreamBuffer. More...
 
- Public Member Functions inherited from DynExpInstr::CircularDataStreamBase
size_t GetNumRecentBasicSamples (size_t Count) const
 Determines the amount of samples which have been written to the stream after the last Count samples. This is useful if the caller just wants to obtain recent samples but not the entire stream. Then, the caller should remember the amount of samples it knows already and call ReadRecentBasicSamples() next. More...
 
BasicSampleListType ReadRecentBasicSamples (size_t Count)
 Reads the most recent samples from the stream skipping Count samples. Also refer to GetNumRecentBasicSamples(). More...
 
- Public Member Functions inherited from DynExpInstr::DataStreamBase
virtual ~DataStreamBase ()=default
 
bool CanRead () const
 Determines whether the stream contains at least one sample which can be read (i.e. GetStreamSizeRead() returns a value greater than 0). More...
 
void Clear ()
 Removes all samples from the stream's buffer. More...
 
void WriteBasicSample (const BasicSample &Sample)
 Writes a single basic sample to the stream. More...
 
BasicSample ReadBasicSample ()
 Reads a single basic sample from the stream. More...
 
void WriteBasicSamples (const BasicSampleListType &Samples)
 Writes a list of basic sample to the stream. More...
 
BasicSampleListType ReadBasicSamples (size_t Count)
 Reads a list of basic sample from the stream. More...
 

Private Member Functions

virtual void WriteBasicSampleChild (const BasicSample &Sample) override
 Writes a single basic sample to the stream. More...
 
virtual BasicSample ReadBasicSampleChild () override
 Reads a single basic sample from the stream. More...
 

Additional Inherited Members

- Public Types inherited from DynExpInstr::CircularDataStream< BasicSample >
using SampleType = BasicSample
 Alias for SampleT. More...
 
- Public Types inherited from DynExpInstr::DataStreamBase
using BasicSampleListType = std::vector< BasicSample >
 Type of a list containing data stream samples of type BasicSample. More...
 
- Protected Member Functions inherited from DynExpInstr::CircularDataStream< BasicSample >
virtual void ClearChild () override
 Removes all samples from the stream's buffer. More...
 
- Protected Member Functions inherited from DynExpInstr::CircularDataStreamBase
 CircularDataStreamBase ()=default
 
virtual ~CircularDataStreamBase ()=default
 

Detailed Description

Implements a circular data stream based on Util::circularbuf using samples of type BasicSample.

Definition at line 541 of file DataStreamInstrument.h.

Constructor & Destructor Documentation

◆ BasicSampleStream()

DynExpInstr::BasicSampleStream::BasicSampleStream ( size_t  BufferSizeInSamples)
inline

Constructs a BasicSampleStream instance.

Parameters
BufferSizeInSamplesInitial stream buffer size in samples

Definition at line 548 of file DataStreamInstrument.h.

◆ ~BasicSampleStream()

virtual DynExpInstr::BasicSampleStream::~BasicSampleStream ( )
virtualdefault

Member Function Documentation

◆ IsBasicSampleConvertible()

bool DynExpInstr::BasicSampleStream::IsBasicSampleConvertible ( ) const
inlinefinaloverridevirtualnoexcept

Determines whether the data stream holds samples which are compatible to BasicSample.

Returns
Return true if the derived data stream's samples can be converted to BasicSample instances, false otherwise.

Reimplemented from DynExpInstr::DataStreamBase.

Definition at line 552 of file DataStreamInstrument.h.

◆ IsBasicSampleTimeUsed()

bool DynExpInstr::BasicSampleStream::IsBasicSampleTimeUsed ( ) const
inlinefinaloverridevirtualnoexcept

Determines whether the data stream holds basic samples (IsBasicSampleConvertible() returns true) which contain information in their BasicSample::Time fields.

Returns
Return true if the derived data stream's basic samples use the BasicSample::Time variable, false otherwise.

Reimplemented from DynExpInstr::DataStreamBase.

Definition at line 553 of file DataStreamInstrument.h.

◆ ReadBasicSampleChild()

virtual BasicSample DynExpInstr::BasicSampleStream::ReadBasicSampleChild ( )
inlineoverrideprivatevirtual

Reads a single basic sample from the stream.

Returns
Read sample
Exceptions
Util::NotImplementedExceptionis thrown by the default implementation, which does not do anything more.

Reimplemented from DynExpInstr::DataStreamBase.

Definition at line 557 of file DataStreamInstrument.h.

◆ WriteBasicSampleChild()

virtual void DynExpInstr::BasicSampleStream::WriteBasicSampleChild ( const BasicSample Sample)
inlineoverrideprivatevirtual

Writes a single basic sample to the stream.

Parameters
SampleSample to write
Exceptions
Util::NotImplementedExceptionis thrown by the default implementation, which does not do anything more.

Reimplemented from DynExpInstr::DataStreamBase.

Definition at line 556 of file DataStreamInstrument.h.


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