|
jaulib v1.4.0-2-g788cf73
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, lb_endian_t byteOrder=lb_endian_t::little) noexcept | |
| Construct a ringbuffer backed Http byte input stream. | |
| ~ByteInStream_URL () noexcept override | |
| bool | available (size_t n) noexcept override |
| Check whether n bytes are available in the input stream. | |
| bool | canRewind () const noexcept override |
| Return true if implementation supports random rewinding the stream, i.e. | |
| void | close () noexcept override |
| Close the stream if supported by the underlying mechanism. | |
| size_type | contentSize () const noexcept override |
| Returns the content_size if known. | |
| size_t | discard (size_t N) noexcept override |
| Implemented by skipping input stream via read. | |
| void | flush () noexcept override |
| Synchronizes all output operations, or do nothing. | |
| bool | hasContentSize () const noexcept override |
| Returns true if implementation is aware of content_size(), otherwise false. | |
| std::string | id () const noexcept override |
| return the id of this data source | |
| bool | isOpen () const noexcept override |
| Checks if the stream has an associated file. | |
| size_type | mark () const noexcept override |
Returns the markpos set via setMark() or ByteStream::npos if unset. | |
| size_type | markReadLimit () const noexcept override |
Returns the readLimit set via setMark(). | |
| ByteInStream_URL & | operator= (const ByteInStream_URL &)=delete |
| size_t | peek (void *out, size_t length, size_type peek_offset) noexcept override |
| Read from the source but do not modify the internal offset. | |
| size_type | position () const noexcept override |
| Returns the position indicator, similar to e.g. | |
| iostate_t | rdstate () const noexcept override |
| Returns the current state flags. | |
| size_t | read (void *out, size_t length) noexcept override |
| Read from the source. | |
| size_type | seek (size_type newPos) noexcept override |
newPos < position() limited to markpos, see setMark(). | |
| bool | seekMark () noexcept override |
Seeks stream position to markpos as set via setMark(). | |
| bool | setMark (size_type readLimit) noexcept override |
Set markpos to current position, allowing the stream to be seekMark(). | |
| std::string | toString () const noexcept override |
| size_t | write (const void *, size_t) noexcept override |
| Write to the data sink. | |
Public Member Functions inherited from jau::io::ByteStream | |
| ByteStream (iomode_t mode, lb_endian_t byteOrder=lb_endian_t::little) noexcept | |
| ~ByteStream () noexcept override=default | |
| constexpr lb_endian_t | byteOrder () const noexcept |
| Returns endian byte-order of stream storage. | |
| constexpr bool | canRead () const noexcept |
| Returns true in case stream has iomode::read capabilities. | |
| constexpr bool | canWrite () const noexcept |
| Returns true in case stream has iomode::write capabilities. | |
| constexpr iomode_t | mode () const noexcept |
| bool | peek (uint8_t &out) noexcept |
| Peek one byte at current position. | |
| bool | read (uint8_t &bits) noexcept |
Read one byte, uint8_t | |
| bool | readS16 (int16_t &bits) noexcept |
Read int16_t. | |
| bool | readS32 (int32_t &bits) noexcept |
Read int32_t. | |
| bool | readS64 (int64_t &bits) noexcept |
Read int64_t. | |
| bool | readU16 (uint16_t &bits) noexcept |
Read uint16_t. | |
| bool | readU32 (uint32_t &bits) noexcept |
Read incoming uint32_t. | |
| bool | readU64 (uint64_t &bits) noexcept |
Read incoming uint64_t. | |
| bool | readU64Raw (uint64_t &bits) noexcept |
Read incoming uint64_t w/o considering bigEndian, i.e. | |
| virtual size_type | remaining () const noexcept |
| Returns the remaining bytes, i.e. | |
| void | setImmutable () noexcept |
| Clears iomode_t::write from mode() | |
| bool | write (uint8_t in) noexcept |
Write one byte, uint8_t. | |
| bool | writeS16 (int16_t bits) noexcept |
Write the given int16_t. | |
| bool | writeS32 (int32_t bits) noexcept |
Write the given int32_t. | |
| bool | writeS64 (int64_t bits) noexcept |
Write the given int64_t. | |
| bool | writeU16 (uint16_t bits) noexcept |
Write the given uint16_t. | |
| bool | writeU32 (uint32_t bits) noexcept |
Write the given uint32_t. | |
| bool | writeU64 (uint64_t bits) noexcept |
Write the given uint64_t. | |
| bool | writeU64Raw (uint64_t bits) noexcept |
Write the given uint64_t w/o considering bigEndian, i.e. | |
Public Member Functions inherited from jau::io::IOStateCap | |
| IOStateCap () noexcept | |
| IOStateCap (const IOStateCap &o) noexcept=default | |
| IOStateCap (IOStateCap &&o) noexcept=default | |
| virtual | ~IOStateCap () noexcept=default |
| void | addState (const iostate_t state) noexcept |
| Adds given state flags to existing rdstate() bits. | |
| virtual void | assignState (const iostate_t state=iostate_t::goodbit) noexcept |
| Assigns given state to current value. | |
| bool | bad () const noexcept |
| Checks if a non-recoverable error has occurred. | |
| void | clear (const iostate_t state=iostate_t::goodbit) noexcept |
| Clears state flags by assignment to the given value. | |
| void | clearStateFlags (const iostate_t clr) noexcept |
| Clears given state flags from current value. | |
| bool | eof () const noexcept |
| Checks if end-of-file has been reached. | |
| bool | fail () const noexcept |
| Checks if an error has occurred. | |
| bool | good () const noexcept |
| Checks if no error nor eof() has occurred i.e. | |
| operator bool () const noexcept | |
| Checks if no error has occurred, synonym of !fail(). | |
| bool | operator! () const noexcept |
| Checks if an error has occurred, synonym of fail(). | |
| IOStateCap & | operator= (const IOStateCap &o) noexcept=default |
| IOStateCap & | operator= (IOStateCap &&o) noexcept=default |
| void | setstate (const iostate_t state) noexcept |
| Sets state flags, by keeping its previous bits. | |
| bool | timeout () const noexcept |
| Checks if a timeout (non-recoverable) has occurred. | |
Additional Inherited Members | |
Public Types inherited from jau::io::ByteStream | |
| typedef uint64_t | size_type |
| uint64_t size data type, bit position and count | |
Static Public Attributes inherited from jau::io::ByteStream | |
| static constexpr size_type | npos = std::numeric_limits<size_type>::max() |
| Invalid position constant, denoting unset mark() or invalid position. | |
Protected Member Functions inherited from jau::io::ByteStream | |
| size_t | discardRead (size_t n) noexcept |
| Fallback slow discard implementation usind read() in case of unknown stream size. | |
Protected Member Functions inherited from jau::io::IOStateCap | |
| constexpr void | addstate_impl (iostate_t state) const noexcept |
| constexpr iostate_t | rdstate_impl () const noexcept |
Protected Attributes inherited from jau::io::ByteStream | |
| lb_endian_t | m_byteOrder |
| iomode_t | m_iomode |
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 950 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 |
| byteOrder | endian byte-order of stream storage, defaults to lb_endian_t::little. Only affects multi-byte r/w operations, e.g. readU16(), writeU16(), etc |
Definition at line 546 of file byte_stream.cpp.
|
delete |
|
inlineoverridenoexcept |
Definition at line 965 of file byte_stream.hpp.
|
delete |
|
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 addState(), hence they all will use the updated state from a potential override implementation.
Reimplemented from jau::io::IOStateCap.
Definition at line 666 of file byte_stream.cpp.
|
overridevirtualnoexcept |
Checks if the stream has an associated file.
Implements jau::io::ByteStream.
Definition at line 597 of file byte_stream.cpp.
|
overridevirtualnoexcept |
Close the stream if supported by the underlying mechanism.
Implements jau::io::ByteStream.
Definition at line 553 of file byte_stream.cpp.
|
inlineoverridevirtualnoexcept |
return the id of this data source
Reimplemented from jau::io::ByteStream.
Definition at line 971 of file byte_stream.hpp.
|
overridevirtualnoexcept |
Returns true if implementation is aware of content_size(), otherwise false.
Implements jau::io::ByteStream.
Definition at line 602 of file byte_stream.cpp.
|
inlineoverridevirtualnoexcept |
Returns the content_size if known.
Implements jau::io::ByteStream.
Definition at line 974 of file byte_stream.hpp.
|
inlineoverridevirtualnoexcept |
Returns the position indicator, similar to e.g.
std::basic_istream.
Implements jau::io::ByteStream.
Definition at line 975 of file byte_stream.hpp.
|
inlineoverridevirtualnoexcept |
Return true if implementation supports random rewinding the stream, i.e.
seek() below position().
If random rewind is not supported and method returns false, one can still rewind in range [mark() .. position()).
Implements jau::io::ByteStream.
Definition at line 977 of file byte_stream.hpp.
|
nodiscardoverridevirtualnoexcept |
newPos < position() limited to markpos, see setMark().
Implements jau::io::ByteStream.
Definition at line 607 of file byte_stream.cpp.
|
overridevirtualnoexcept |
Implements jau::io::ByteStream.
Definition at line 689 of file byte_stream.cpp.
|
nodiscardoverridevirtualnoexcept |
Set markpos to current position, allowing the stream to be seekMark().
seek() will clear markpos if > newPos.
For implementations where seek() doesn't allow random rewinding of the stream, setMark() will allow rewinding back to markpos if not exceeding readLimit.
| readlimit | maximum number of bytes able to read before invalidating the markpos. |
Implements jau::io::ByteStream.
Definition at line 634 of file byte_stream.cpp.
|
inlineoverridevirtualnoexcept |
Returns the markpos set via setMark() or ByteStream::npos if unset.
Implements jau::io::ByteStream.
Definition at line 985 of file byte_stream.hpp.
|
inlineoverridevirtualnoexcept |
Returns the readLimit set via setMark().
If unset either 0 or implicit limit.
Implements jau::io::ByteStream.
Definition at line 986 of file byte_stream.hpp.
|
nodiscardoverridevirtualnoexcept |
Seeks stream position to markpos as set via setMark().
markpos is kept, hence seekMark() can be called multiple times.
Implements jau::io::ByteStream.
Definition at line 643 of file byte_stream.cpp.
|
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::ByteStream.
Definition at line 570 of file byte_stream.cpp.
|
nodiscardoverridevirtualnoexcept |
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::ByteStream.
Definition at line 650 of file byte_stream.cpp.
|
nodiscardoverridevirtualnoexcept |
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.
Input stream operation, returns zero if !is_input().
| out | the byte array to write the output to |
| length | the length of the byte array out |
| peek_offset | offset from current stream position to read at |
Implements jau::io::ByteStream.
Definition at line 658 of file byte_stream.cpp.
|
nodiscardoverridevirtualnoexcept |
Implemented by skipping input stream via read.
Implements jau::io::ByteStream.
Definition at line 630 of file byte_stream.cpp.
|
inlinenodiscardoverridevirtualnoexcept |
Write to the data sink.
Moves the internal offset so that every call to write will be appended to the sink.
This method is not blocking beyond the transfer length bytes.
Output stream operation, returns zero if !is_output().
| in | the input bytes to write out |
| length | the length of the byte array in |
Implements jau::io::ByteStream.
Definition at line 1026 of file byte_stream.hpp.
|
inlineoverridevirtualnoexcept |
Synchronizes all output operations, or do nothing.
Implements jau::io::ByteStream.
Definition at line 1027 of file byte_stream.hpp.