jaulib v1.3.0
Jau Support Library (C++, Java, ..)
|
Abstract byte input stream object. More...
#include <byte_stream.hpp>
Public Member Functions | |
ByteInStream () noexcept | |
ByteInStream (const ByteInStream &)=delete | |
~ByteInStream () noexcept override=default | |
virtual bool | available (size_t n) noexcept=0 |
Return whether n bytes are available in the input stream, if has_content_size() or using an asynchronous source. More... | |
virtual void | close () noexcept=0 |
Close the stream if supported by the underlying mechanism. More... | |
virtual uint64_t | content_size () const noexcept=0 |
Returns the content_size if known. More... | |
size_t | discard (size_t N) noexcept |
Discard the next N bytes of the data. More... | |
virtual bool | has_content_size () const noexcept=0 |
Returns true if implementation is aware of content_size(), otherwise false. More... | |
virtual std::string | id () const noexcept |
return the id of this data source More... | |
virtual bool | is_open () const noexcept=0 |
Checks if the stream has an associated file. More... | |
ByteInStream & | operator= (const ByteInStream &)=delete |
bool | peek (uint8_t &out) noexcept |
Peek at one byte. More... | |
virtual size_t | peek (void *out, size_t length, size_t peek_offset) noexcept=0 |
Read from the source but do not modify the internal offset. More... | |
bool | read (uint8_t &out) noexcept |
Read one byte. More... | |
virtual size_t | read (void *out, size_t length) noexcept=0 |
Read from the source. More... | |
virtual uint64_t | tellg () const noexcept=0 |
Returns the input position indicator, similar to std::basic_istream. More... | |
virtual std::string | to_string () const noexcept=0 |
Public Member Functions inherited from jau::io::iostate_func | |
iostate_func () noexcept | |
iostate_func (const iostate_func &o) noexcept=default | |
iostate_func (iostate_func &&o) noexcept=default | |
virtual | ~iostate_func () noexcept=default |
bool | bad () const noexcept |
Checks if a non-recoverable error has occurred. More... | |
virtual void | clear (const iostate state=iostate::goodbit) noexcept |
Clears state flags by assignment to the given value. More... | |
bool | eof () const noexcept |
Checks if end-of-file has been reached. More... | |
bool | fail () const noexcept |
Checks if an error has occurred. More... | |
bool | good () const noexcept |
Checks if no error nor eof() has occurred i.e. More... | |
operator bool () const noexcept | |
Checks if no error has occurred, synonym of !fail(). More... | |
bool | operator! () const noexcept |
Checks if an error has occurred, synonym of fail(). More... | |
iostate_func & | operator= (const iostate_func &o) noexcept=default |
iostate_func & | operator= (iostate_func &&o) noexcept=default |
virtual iostate | rdstate () const noexcept |
Returns the current state flags. More... | |
void | setstate (const iostate state) noexcept |
Sets state flags, by keeping its previous bits. More... | |
bool | timeout () const noexcept |
Checks if a timeout (non-recoverable) has occurred. More... | |
Additional Inherited Members | |
Protected Member Functions inherited from jau::io::iostate_func | |
constexpr iostate | rdstate_impl () const noexcept |
constexpr void | setstate_impl (iostate state) const noexcept |
Abstract byte input stream object.
The byte input stream can originate from a local source w/o delay, remote URL like http connection or even from another thread feeding the input buffer.
Both latter asynchronous resources may expose blocking properties in available().
Asynchronous resources benefit from knowing their content size, as their available() implementation may avoid blocking and waiting for requested bytes available if the stream is already beyond its scope.
All method implementations are of noexcept
.
One may use fail() to detect whether an error has occurred, while end_of_data() not only covers the end-of-stream (EOS) case but includes fail().
Definition at line 195 of file byte_stream.hpp.
|
inlinenoexcept |
Definition at line 198 of file byte_stream.hpp.
|
overridedefaultnoexcept |
|
delete |
|
delete |
|
pure virtualnoexcept |
Checks if the stream has an associated file.
Implemented in jau::io::ByteInStream_SecMemory, jau::io::ByteInStream_File, jau::io::ByteInStream_URL, jau::io::ByteInStream_Feed, and jau::io::ByteInStream_Recorder.
|
pure virtualnoexcept |
Close the stream if supported by the underlying mechanism.
Implemented in jau::io::ByteInStream_SecMemory, jau::io::ByteInStream_File, jau::io::ByteInStream_URL, jau::io::ByteInStream_Feed, and jau::io::ByteInStream_Recorder.
|
pure virtualnoexcept |
Return whether n bytes are available in the input stream, if has_content_size() or using an asynchronous source.
If !has_content_size() and not being an asynchronous source, !end_of_data() is returned.
Method may be blocking when using an asynchronous source up until the requested bytes are available.
A subsequent call to read() shall return immediately with at least the requested numbers of bytes available, if has_content_size() or using an asynchronous source.
See details of the implementing class.
n | byte count to wait for |
Implemented in jau::io::ByteInStream_SecMemory, jau::io::ByteInStream_File, jau::io::ByteInStream_URL, jau::io::ByteInStream_Feed, and jau::io::ByteInStream_Recorder.
|
pure virtualnoexcept |
Read from the source.
Moves the internal offset so that every call to read will return a new portion of the source.
Use available() to try to wait for a certain amount of bytes available.
This method shall only block until min(available, length)
bytes are transfered.
See details of the implementing class.
out | the byte array to write the result to |
length | the length of the byte array out |
Implemented in jau::io::ByteInStream_SecMemory, jau::io::ByteInStream_File, jau::io::ByteInStream_Recorder, jau::io::ByteInStream_URL, and jau::io::ByteInStream_Feed.
|
noexcept |
Read one byte.
out | the byte to read to |
Definition at line 82 of file byte_stream.cpp.
|
pure virtualnoexcept |
Read from the source but do not modify the internal offset.
Consecutive calls to peek() will return portions of the source starting at the same position.
out | the byte array to write the output to |
length | the length of the byte array out |
peek_offset | the offset into the stream to read at |
Implemented in jau::io::ByteInStream_SecMemory, jau::io::ByteInStream_File, jau::io::ByteInStream_URL, jau::io::ByteInStream_Feed, and jau::io::ByteInStream_Recorder.
|
noexcept |
Peek at one byte.
out | an output byte |
Definition at line 86 of file byte_stream.cpp.
|
noexcept |
Discard the next N bytes of the data.
N | the number of bytes to discard |
Definition at line 90 of file byte_stream.cpp.
|
inlinevirtualnoexcept |
return the id of this data source
Reimplemented in jau::io::ByteInStream_File, jau::io::ByteInStream_URL, jau::io::ByteInStream_Feed, and jau::io::ByteInStream_Recorder.
Definition at line 294 of file byte_stream.hpp.
|
pure virtualnoexcept |
Returns the input position indicator, similar to std::basic_istream.
Implemented in jau::io::ByteInStream_SecMemory, jau::io::ByteInStream_File, jau::io::ByteInStream_URL, jau::io::ByteInStream_Feed, and jau::io::ByteInStream_Recorder.
|
pure virtualnoexcept |
Returns true if implementation is aware of content_size(), otherwise false.
Implemented in jau::io::ByteInStream_SecMemory, jau::io::ByteInStream_File, jau::io::ByteInStream_URL, jau::io::ByteInStream_Feed, and jau::io::ByteInStream_Recorder.
|
pure virtualnoexcept |
Returns the content_size if known.
Implemented in jau::io::ByteInStream_SecMemory, jau::io::ByteInStream_File, jau::io::ByteInStream_URL, jau::io::ByteInStream_Feed, and jau::io::ByteInStream_Recorder.
|
pure virtualnoexcept |
Implemented in jau::io::ByteInStream_SecMemory, jau::io::ByteInStream_File, jau::io::ByteInStream_URL, jau::io::ByteInStream_Feed, and jau::io::ByteInStream_Recorder.