Read/write stream using expandable memory buffer. More...
#include <MemoryDataStream.h>
Public Member Functions | |
MemoryDataStream (size_t maxCapacity=UINT16_MAX) | |
MemoryDataStream (String &&string) noexcept | |
Stream takes ownership of String content using move semantics. More... | |
~MemoryDataStream () | |
StreamType | getStreamType () const override |
Get the stream type. More... | |
const char * | getStreamPointer () const |
Get a pointer to the current position. More... | |
int | available () override |
Return the total length of the stream. More... | |
size_t | write (const uint8_t *buffer, size_t size) override |
Write chars to end of stream. More... | |
uint16_t | readMemoryBlock (char *data, int bufSize) override |
Read a block of memory. More... | |
int | seekFrom (int offset, SeekOrigin origin) override |
Change position in stream. More... | |
bool | isFinished () override |
Check if all data has been read. More... | |
bool | moveString (String &s) override |
Memory-based streams may be able to move content into a String. More... | |
bool | ensureCapacity (size_t minCapacity) |
Pre-allocate stream to given size. More... | |
void | clear () |
Clear data from stream and reset to start, but keep buffer allocated. More... | |
size_t | getSize () const |
size_t | getCapacity () const |
![]() | |
size_t | write (uint8_t charToWrite) override |
From Stream class: We don't write using this stream. More... | |
virtual size_t | copyFrom (IDataSourceStream *source, size_t size=SIZE_MAX) |
Copy data from a source stream. More... | |
![]() | |
virtual bool | isValid () const |
Determine if the stream object contains valid data. More... | |
size_t | readBytes (char *buffer, size_t length) override |
Read chars from stream into buffer. More... | |
int | read () override |
Read one character and moves the stream pointer. More... | |
int | peek () override |
Read a character without advancing the stream pointer. More... | |
virtual bool | seek (int len) |
Move read cursor. More... | |
int | length () |
Return the total length of the stream. More... | |
void | flush () override |
virtual String | id () const |
Returns unique id of the resource. More... | |
virtual String | getName () const |
Returns name of the resource. More... | |
virtual MimeType | getMimeType () const |
Get MIME type for stream content. More... | |
String | readString (size_t maxLen) override |
Overrides Stream method for more efficient reading. More... | |
![]() | |
Stream () | |
void | setTimeout (unsigned long timeout) |
Set maximum milliseconds to wait for stream data, default is 1 second. More... | |
bool | find (const char *target) |
Read data from the stream until the target string is found. More... | |
bool | find (const char *target, size_t length) |
Read data from the stream until the target string of given length is found. More... | |
bool | findUntil (const char *target, const char *terminator) |
As find() but search ends if the terminator string is found. More... | |
bool | findUntil (const char *target, size_t targetLen, const char *terminate, size_t termLen) |
As findUntil(const char*, const char*) but search ends if the terminate string is found. More... | |
long | parseInt () |
Returns the first valid (long) integer value from the current position. More... | |
float | parseFloat () |
float version of parseInt More... | |
size_t | readBytesUntil (char terminator, char *buffer, size_t length) |
As readBytes() with terminator character. More... | |
String | readStringUntil (char terminator) |
virtual int | indexOf (char c) |
![]() | |
virtual | ~Print () |
int | getWriteError () |
Gets last error. More... | |
void | clearWriteError () |
Clears the last write error. More... | |
size_t | write (const char *str) |
Writes a c-string to output stream. More... | |
size_t | write (const char *buffer, size_t size) |
Writes characters from a buffer to output stream. More... | |
size_t | print (char c) |
Prints a single character to output stream. More... | |
size_t | print (const char str[]) |
Prints a c-string to output stream. More... | |
size_t | print (double num, int digits=2) |
Print a floating-point number to output stream. More... | |
size_t | print (const Printable &p) |
Prints a Printable object to output stream. More... | |
size_t | print (const String &s) |
Prints a String to output stream. More... | |
size_t | println () |
Prints a newline to output stream. More... | |
size_t | println (const char str[]) |
Prints a c-string to output stream, appending newline. More... | |
size_t | println (char c) |
Prints a single character to output stream, appending newline. More... | |
size_t | println (double num, int digits=2) |
Print a floating-point number to output stream, appending newline. More... | |
size_t | println (const Printable &p) |
Prints a Printable object to output stream, appending newline. More... | |
size_t | println (const String &s) |
Prints a String to output stream, appending newline. More... | |
size_t | printf (const char *fmt,...) __attribute__((format(printf |
Prints a formatted c-string to output stream. More... | |
size_t | print (unsigned long num, int base=DEC) |
size_t | print (const unsigned long long &num, int base=DEC) |
size_t | print (long, int base=DEC) |
size_t | print (const long long &, int base=DEC) |
size_t | print (unsigned int num, int base=DEC) |
size_t | print (unsigned char num, int base=DEC) |
size_t | print (int num, int base=DEC) |
size_t | println (unsigned char num, int base=DEC) |
size_t | println (unsigned int num, int base=DEC) |
size_t | println (unsigned long num, int base=DEC) |
size_t | println (const unsigned long long &num, int base=DEC) |
size_t | println (int num, int base=DEC) |
size_t | println (long num, int base=DEC) |
size_t | println (const long long &num, int base=DEC) |
Additional Inherited Members | |
![]() | |
int | timedRead () |
int | timedPeek () |
int | peekNextDigit () |
returns the next numeric digit in the stream or -1 if timeout More... | |
long | parseInt (char skipChar) |
Like regular parseInt() but the given skipChar is ignored. More... | |
float | parseFloat (char skipChar) |
Like parseInt(skipChar) for float. More... | |
![]() | |
void | setWriteError (int err=1) |
![]() | |
uint16_t | receiveTimeout = 1000 |
number of milliseconds to wait for the next char before aborting timed read More... | |
Detailed Description
Read/write stream using expandable memory buffer.
This is intended to allow data to be streamed into it, then streamed back out at a later date.
It is not intended to have data continuously written in and read out; memory is not reclaimed as it is read.
Constructor & Destructor Documentation
◆ MemoryDataStream() [1/2]
|
inline |
◆ MemoryDataStream() [2/2]
|
noexcept |
◆ ~MemoryDataStream()
|
inline |
Member Function Documentation
◆ available()
|
inlineoverridevirtual |
Return the total length of the stream.
- Return values
-
int -1 is returned when the size cannot be determined
Reimplemented from IDataSourceStream.
Reimplemented in JsonObjectStream.
◆ clear()
|
inline |
Clear data from stream and reset to start, but keep buffer allocated.
◆ ensureCapacity()
bool MemoryDataStream::ensureCapacity | ( | size_t | minCapacity | ) |
Pre-allocate stream to given size.
- Parameters
-
minCapacity Total minimum number of bytes required in stream
- Return values
-
bool true on success
- Note
- Memory is only reallocated if smaller than requested size. If reallocation fails the existing stream content is preserved. Intended use is to reduce or eliminate buffer reallocations if the size is known in advance. Provided subsequent write operations do not exceed the total capacity they are guaranteed to succeed, so return value checking may be skipped.
◆ getCapacity()
|
inline |
◆ getSize()
|
inline |
◆ getStreamPointer()
|
inline |
Get a pointer to the current position.
- Return values
-
const char* Pointer to current cursor position within the data stream
◆ getStreamType()
|
inlineoverridevirtual |
Get the stream type.
- Return values
-
StreamType The stream type.
Reimplemented from IDataSourceStream.
Reimplemented in JsonObjectStream.
◆ isFinished()
|
inlineoverridevirtual |
Check if all data has been read.
- Return values
-
bool True on success.
Implements IDataSourceStream.
Reimplemented in JsonObjectStream.
◆ moveString()
Memory-based streams may be able to move content into a String.
- Parameters
-
s String object to move data into
- Return values
-
bool true on success, false if there's a problem.
If the operation is not supported by the stream, s
will be invalidated and false returned.
Because a String object must have a NUL terminator, this will be appended if there is sufficient capacity. In this case, the method returns true.
If there is no capacity to add a NUL terminator, then the final character of stream data will be replaced with a NUL. The method returns false to indicate this.
Reimplemented from IDataSourceStream.
◆ readMemoryBlock()
Read a block of memory.
- Parameters
-
data Pointer to the data to be read bufSize Quantity of chars to read
- Return values
-
uint16_t Quantity of chars read
- Todo:
- Should IDataSourceStream::readMemoryBlock return same data type as its bufSize param?
Implements IDataSourceStream.
Reimplemented in JsonObjectStream.
◆ seekFrom()
|
overridevirtual |
Change position in stream.
- Parameters
-
offset origin
- Return values
-
New position, < 0 on error
- Note
- This method is implemented by streams which support random seeking, such as files and memory streams.
Reimplemented from IDataSourceStream.
◆ write()
|
overridevirtual |
Write chars to end of stream.
- Parameters
-
buffer Pointer to buffer to write to the stream size Quantity of chars to write
- Return values
-
size_t Quantity of chars written to stream
Implements ReadWriteStream.
The documentation for this class was generated from the following file: