jaulib v1.4.0-2-g788cf73
Jau Support Library (C++, Java, ..)
|
Secure Memory-Based byte input stream. More...
#include <byte_stream.hpp>
Public Member Functions | |
ByteStream_SecMemory (const std::string &in, lb_endian_t byteOrder=lb_endian_t::little) | |
Construct a secure memory source that reads from a string, iomode_t::read. | |
ByteStream_SecMemory (const std::vector< uint8_t > &in, iomode_t mode, lb_endian_t byteOrder=lb_endian_t::little) | |
Construct a secure memory source copying data from a std::vector. | |
ByteStream_SecMemory (const uint8_t in[], size_t length, iomode_t mode, lb_endian_t byteOrder=lb_endian_t::little) | |
Construct a secure memory source copying data from a byte array. | |
ByteStream_SecMemory (io::secure_vector< uint8_t > &&in, iomode_t mode, lb_endian_t byteOrder=lb_endian_t::little) | |
Construct a secure memory source copying data from a secure_vector. | |
ByteStream_SecMemory (size_t length, iomode_t mode, lb_endian_t byteOrder=lb_endian_t::little) | |
Construct a secure memory source using a sized byte array. | |
~ByteStream_SecMemory () noexcept override | |
bool | available (size_t n) noexcept override |
Return whether n bytes are available in the input stream, if has_content_size() or using an asynchronous source. | |
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 |
Discard the next N bytes of the data. | |
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. | |
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(). | |
size_t | peek (void *, size_t, size_type) 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. | |
size_t | read (void *, size_t) noexcept override |
Read from the source. | |
size_type | seek (size_type newPos) noexcept override |
Sets position indicator for output-streams or input-streams with known length, similar to e.g. | |
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. | |
![]() | |
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. | |
virtual std::string | id () const noexcept |
return the id of this data source | |
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. | |
![]() | |
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 |
virtual iostate_t | rdstate () const noexcept |
Returns the current state flags. | |
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 | |
![]() | |
typedef uint64_t | size_type |
uint64_t size data type, bit position and count | |
![]() | |
static constexpr size_type | npos = std::numeric_limits<size_type>::max() |
Invalid position constant, denoting unset mark() or invalid position. | |
![]() | |
size_t | discardRead (size_t n) noexcept |
Fallback slow discard implementation usind read() in case of unknown stream size. | |
![]() | |
constexpr void | addstate_impl (iostate_t state) const noexcept |
constexpr iostate_t | rdstate_impl () const noexcept |
![]() | |
lb_endian_t | m_byteOrder |
iomode_t | m_iomode |
Secure Memory-Based byte input stream.
Definition at line 644 of file byte_stream.hpp.
|
explicit |
Construct a secure memory source that reads from a string, iomode_t::read.
in | the string to read from |
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 193 of file byte_stream.cpp.
|
inline |
Construct a secure memory source using a sized byte array.
length | the length of the byte array |
iomode | determines whether file should be opened iomode_t::read, iomode_t::write or iomode_t::rw |
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 661 of file byte_stream.hpp.
|
inline |
Construct a secure memory source copying data from a byte array.
in | the byte array to read from, copied over |
length | the length of the byte array |
iomode | determines whether file should be opened iomode_t::read, iomode_t::write or iomode_t::rw |
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 672 of file byte_stream.hpp.
|
inlineexplicit |
Construct a secure memory source copying data from a secure_vector.
in | the MemoryRegion to read from, this instance assumes ownership |
iomode | determines whether file should be opened iomode_t::read, iomode_t::write or iomode_t::rw |
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 682 of file byte_stream.hpp.
|
inlineexplicit |
Construct a secure memory source copying data from a std::vector.
in | the MemoryRegion to read from, copied over |
iomode | determines whether file should be opened iomode_t::read, iomode_t::write or iomode_t::rw |
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 692 of file byte_stream.hpp.
|
inlineoverridenoexcept |
Definition at line 695 of file byte_stream.hpp.
|
inlineoverridevirtualnoexcept |
Checks if the stream has an associated file.
Implements jau::io::ByteStream.
Definition at line 697 of file byte_stream.hpp.
|
overridevirtualnoexcept |
Close the stream if supported by the underlying mechanism.
Implements jau::io::ByteStream.
Definition at line 200 of file byte_stream.cpp.
|
inlineoverridevirtualnoexcept |
Returns true if implementation is aware of content_size(), otherwise false.
Implements jau::io::ByteStream.
Definition at line 701 of file byte_stream.hpp.
|
inlineoverridevirtualnoexcept |
Returns the content_size if known.
Implements jau::io::ByteStream.
Definition at line 703 of file byte_stream.hpp.
|
inlineoverridevirtualnoexcept |
Returns the position indicator, similar to e.g.
std::basic_istream.
Implements jau::io::ByteStream.
Definition at line 705 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 707 of file byte_stream.hpp.
|
nodiscardoverridevirtualnoexcept |
Sets position indicator for output-streams or input-streams with known length, similar to e.g.
std::basic_istream.
No change occurs if fail() was set or the input-stream has no known length.
If newPos is >= stream-length, iostate::eofbit is set and position set to stream-length, otherwise iostate::eofbit is cleared.
Certain implementations may not allow random rewinding of the stream, see canRewind(). In this case, rewinding is limited to mark(), see setMark(), and may return ByteStream::npos if none set or exceeding range.
A ByteInStream's mark is cleared if > newPos.
newPos | desired absolute byte-offset (position) |
Implements jau::io::ByteStream.
Definition at line 106 of file byte_stream.cpp.
|
overridevirtualnoexcept |
Implements jau::io::ByteStream.
Definition at line 206 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 138 of file byte_stream.cpp.
|
inlineoverridevirtualnoexcept |
Returns the markpos
set via setMark() or ByteStream::npos if unset.
Implements jau::io::ByteStream.
Definition at line 714 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 715 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 143 of file byte_stream.cpp.
|
overridevirtualnoexcept |
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.
Input stream operation, returns false if !is_input().
n | byte count to wait for |
Implements jau::io::ByteStream.
Definition at line 163 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 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.
Input stream operation, returns zero if !is_input().
out | the byte array to write the result to |
length | the length of the byte array out |
Implements jau::io::ByteStream.
Definition at line 150 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 167 of file byte_stream.cpp.
|
nodiscardoverridevirtualnoexcept |
Discard the next N bytes of the data.
Input stream operation, returns zero if !is_input().
N | the number of bytes to discard |
Implements jau::io::ByteStream.
Definition at line 126 of file byte_stream.cpp.
|
nodiscardoverridevirtualnoexcept |
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 183 of file byte_stream.cpp.
|
inlineoverridevirtualnoexcept |
Synchronizes all output operations, or do nothing.
Implements jau::io::ByteStream.
Definition at line 724 of file byte_stream.hpp.