jaulib v1.3.0
Jau Support Library (C++, Java, ..)
|
Ringbuffer-Based byte input stream with a URL connection provisioned data feed. More...
#include <byte_stream.hpp>
Public Member Functions | |
ByteInStream_URL (const ByteInStream_URL &)=delete | |
ByteInStream_URL (std::string url, const jau::fraction_i64 &timeout) noexcept | |
Construct a ringbuffer backed Http byte input stream. More... | |
~ByteInStream_URL () noexcept override | |
bool | available (size_t n) noexcept override |
Check whether n bytes are available in the input stream. More... | |
void | close () noexcept override |
Close the stream if supported by the underlying mechanism. More... | |
uint64_t | content_size () const noexcept override |
Returns the content_size if known. More... | |
bool | has_content_size () const noexcept override |
Returns true if implementation is aware of content_size(), otherwise false. More... | |
std::string | id () const noexcept override |
return the id of this data source More... | |
bool | is_open () const noexcept override |
Checks if the stream has an associated file. More... | |
ByteInStream_URL & | operator= (const ByteInStream_URL &)=delete |
size_t | peek (void *out, size_t length, size_t peek_offset) noexcept override |
Read from the source but do not modify the internal offset. More... | |
iostate | rdstate () const noexcept override |
Returns the current state flags. More... | |
size_t | read (void *out, size_t length) noexcept override |
Read from the source. More... | |
uint64_t | tellg () const noexcept override |
Returns the input position indicator, similar to std::basic_istream. More... | |
std::string | to_string () const noexcept override |
Public Member Functions inherited from jau::io::ByteInStream | |
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 |
Ringbuffer-Based byte input stream with a URL connection provisioned data feed.
Standard implementation uses curl, hence all libcurl network protocols are supported, jau::io::uri::supported_protocols().
Definition at line 467 of file byte_stream.hpp.
|
noexcept |
Construct a ringbuffer backed Http byte input stream.
url | the URL of the data to read |
timeout | maximum duration in fractions of seconds to wait @ available() for next bytes, where fractions_i64::zero waits infinitely |
Definition at line 332 of file byte_stream.cpp.
|
delete |
|
inlineoverridenoexcept |
Definition at line 522 of file byte_stream.hpp.
|
overridevirtualnoexcept |
Check whether n bytes are available in the input stream.
Wait up to timeout duration set in constructor until n bytes become available, where fractions_i64::zero waits infinitely.
This method is blocking.
n | byte count to wait for |
Implements jau::io::ByteInStream.
Definition at line 362 of file byte_stream.cpp.
|
overridevirtualnoexcept |
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 wait and ensure a certain amount of bytes are available.
This method is not blocking beyond the transfer of min(available, length)
bytes.
out | the byte array to write the result to |
length | the length of the byte array out |
Implements jau::io::ByteInStream.
Definition at line 394 of file byte_stream.cpp.
|
overridevirtualnoexcept |
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 |
Implements jau::io::ByteInStream.
Definition at line 414 of file byte_stream.cpp.
|
overridevirtualnoexcept |
Returns the current state flags.
Method is marked virtual
to allow implementations with asynchronous resources to determine or update the current iostate.
Method is used throughout all query members and setstate(), hence they all will use the updated state from a potential override implementation.
Reimplemented from jau::io::iostate_func.
Definition at line 422 of file byte_stream.cpp.
|
inlineoverridevirtualnoexcept |
return the id of this data source
Reimplemented from jau::io::ByteInStream.
Definition at line 505 of file byte_stream.hpp.
|
delete |
|
overridevirtualnoexcept |
Checks if the stream has an associated file.
Implements jau::io::ByteInStream.
Definition at line 389 of file byte_stream.cpp.
|
overridevirtualnoexcept |
Close the stream if supported by the underlying mechanism.
Implements jau::io::ByteInStream.
Definition at line 346 of file byte_stream.cpp.
|
inlineoverridevirtualnoexcept |
Returns the input position indicator, similar to std::basic_istream.
Implements jau::io::ByteInStream.
Definition at line 524 of file byte_stream.hpp.
|
inlineoverridevirtualnoexcept |
Returns true if implementation is aware of content_size(), otherwise false.
Implements jau::io::ByteInStream.
Definition at line 526 of file byte_stream.hpp.
|
inlineoverridevirtualnoexcept |
Returns the content_size if known.
Implements jau::io::ByteInStream.
Definition at line 528 of file byte_stream.hpp.
|
overridevirtualnoexcept |
Implements jau::io::ByteInStream.
Definition at line 443 of file byte_stream.cpp.