openDAQ
Open data acquisition platform
IStreamReader Struct Referenceabstract

A signal data reader that abstracts away reading of signal packets by keeping an internal read-position and automatically advances it on subsequent reads. More...

+ Inheritance diagram for IStreamReader:
+ Collaboration diagram for IStreamReader:

Detailed Description

A signal data reader that abstracts away reading of signal packets by keeping an internal read-position and automatically advances it on subsequent reads.

Remarks
Currently only supports scalar sample-types and RangeInt64

Public Member Functions

virtual ErrCode INTERFACE_FUNC read (void *samples, SizeT *count, SizeT timeoutMs=0, IReaderStatus **status=nullptr)=0
 Copies at maximum the next count unread samples to the values buffer. The amount actually read is returned through the count parameter. More...
 
virtual ErrCode INTERFACE_FUNC readWithDomain (void *samples, void *domain, SizeT *count, SizeT timeoutMs=0, IReaderStatus **status=nullptr)=0
 Copies at maximum the next count unread samples and clock-stamps to the samples and domain buffers. The amount actually read is returned through the count parameter. More...
 
virtual ErrCode INTERFACE_FUNC skipSamples (SizeT *count, IReaderStatus **status)=0
 Skips the specified amount of samples. More...
 
- Public Member Functions inherited from ISampleReader
virtual ErrCode INTERFACE_FUNC getValueReadType (SampleType *sampleType)=0
 Gets the sample-type the signal value samples will be converted to when read or SampleType::Invalid if read-type has not been determined yet. More...
 
virtual ErrCode INTERFACE_FUNC getDomainReadType (SampleType *sampleType)=0
 Gets the sample-type the signal domain samples will be converted to when read or SampleType::Invalid if read-type has not been determined yet. More...
 
virtual ErrCode INTERFACE_FUNC setValueTransformFunction (IFunction *transform)=0
 Sets the transform function that will be called with the read value-data and currently valid Signal-Descriptor giving the user the chance add a custom post-processing step. The function should have a signature compatible with: More...
 
virtual ErrCode INTERFACE_FUNC setDomainTransformFunction (IFunction *transform)=0
 Sets the transform function that will be called with the read domain-data and currently valid Signal-Descriptor giving the user the chance add a custom post-processing step. The function should have a signature compatible with: More...
 
virtual ErrCode INTERFACE_FUNC getReadMode (ReadMode *mode)=0
 Gets the reader's read mode which determines if the reader will also scale the read data or not. More...
 
- Public Member Functions inherited from IReader
virtual ErrCode INTERFACE_FUNC getAvailableCount (SizeT *count)=0
 Gets the number of segments available to read. More...
 
virtual ErrCode INTERFACE_FUNC setOnDataAvailable (IProcedure *callback)=0
 Sets the specified callback function to be called when there is available data in the reader. Pass nullptr to unset the callback. The callback should take no arguments. More...
 
virtual ErrCode INTERFACE_FUNC getEmpty (Bool *empty)=0
 Checks if there is data to read. More...
 
- Public Member Functions inherited from IBaseObject
virtual ErrCode INTERFACE_FUNC borrowInterface (const IntfID &intfID, void **obj) const =0
 Returns another interface which is supported by the object without incrementing the reference count. More...
 
virtual ErrCode INTERFACE_FUNC dispose ()=0
 Disposes all references held by the object. More...
 
virtual ErrCode INTERFACE_FUNC getHashCode (SizeT *hashCode)=0
 Returns hash code of the object. More...
 
virtual ErrCode INTERFACE_FUNC equals (IBaseObject *other, Bool *equal) const =0
 Compares object to another object for equality. More...
 
virtual ErrCode INTERFACE_FUNC toString (CharPtr *str)=0
 Returns a string representation of the object. More...
 
- Public Member Functions inherited from IUnknown
virtual ErrCode INTERFACE_FUNC queryInterface (const IntfID &intfID, void **obj)=0
 Returns another interface which is supported by the object and increments the reference count. More...
 
virtual int INTERFACE_FUNC addRef ()=0
 Increments the reference count for an interface on an object. More...
 
virtual int INTERFACE_FUNC releaseRef ()=0
 Decrements the reference count for an interface on an object. More...
 

Member Function Documentation

◆ read()

virtual ErrCode INTERFACE_FUNC read ( void *  samples,
SizeT *  count,
SizeT  timeoutMs = 0,
IReaderStatus **  status = nullptr 
)
pure virtual

Copies at maximum the next count unread samples to the values buffer. The amount actually read is returned through the count parameter.

Parameters
[in]samplesThe buffer that the samples will be copied to. The buffer must be a contiguous memory big enough to receive count amount of samples.
[in,out]countThe maximum amount of samples to be read. If the count is less than available the parameter value is set to the actual amount and only the available samples are returned. The rest of the buffer is not modified or cleared.
timeoutMsThe maximum amount of time in milliseconds to wait for the requested amount of samples before returning.
[out]statusRepresents the status of the reader.

◆ readWithDomain()

virtual ErrCode INTERFACE_FUNC readWithDomain ( void *  samples,
void *  domain,
SizeT *  count,
SizeT  timeoutMs = 0,
IReaderStatus **  status = nullptr 
)
pure virtual

Copies at maximum the next count unread samples and clock-stamps to the samples and domain buffers. The amount actually read is returned through the count parameter.

Parameters
[in]samplesThe buffer that the samples will be copied to. The buffer must be a contiguous memory big enough to receive count amount of samples.
[in]domainThe buffer that the domain values will be copied to. The buffer must be a contiguous memory big enough to receive count amount of clock-stamps.
[in,out]countThe maximum amount of samples to be read. If the count is less than available the parameter value is set to the actual amount and only the available samples are returned. The rest of the buffer is not modified or cleared.
timeoutMsThe maximum amount of time in milliseconds to wait for the requested amount of samples before returning.
[out]statusRepresents the status of the reader.

◆ skipSamples()

virtual ErrCode INTERFACE_FUNC skipSamples ( SizeT *  count,
IReaderStatus **  status 
)
pure virtual

Skips the specified amount of samples.

Parameters
[in,out]countThe maximum amount of samples to be skipped. If the count is less than available the parameter value is set to the actual amount and only the available samples are skipped. The rest of the buffer is not modified or cleared.