From v4.1 to v4.2
Summary
Stream methods
The Stream::readBytes()
has been virtualised and overridden for IDataSourceStream
descendents for more efficient operation, especially with ArduinoJson.
For normal read operations where the stream position is to be updated, applications should use
this method in preference to IDataSourceStream::readMemoryBlock()
.
An addition method IDataSourceStream::moveString()
has been added to support extracting
the content of a memory-based stream into a String object without duplicating the data.
This is supported by LimitedMemoryStream
and MemoryDataStream
.
Stream / file seeking
To provide a consistent interface SeekOrigin
is now used with all seek methods for streams,
and also by file system functions. Mappings are:
SeekOrigin::Start instead of eSO_FileStart
SeekOrigin::Current instead of eSO_CurrentPos
SeekOrigin::End instead of eSO_FileEnd
These map to the standard C SEEK_SET, SEEK_CUR and SEEK_END but as SeekOrigin is strongly typed
it offers compile-time checking, and has a toString(SeekOrigin)
overload.
getBody methods
The HttpRequest::getBody()
and HttpResponse::getBody()
methods have been revised to use
move semantics. Previously, the data was copied into a new String which effectively doubled memory usage.
If you have set a non-memory stream type (e.g. FileStream
) which does not implement IDataSourceStream::moveString()
then an invalid String will be returned. In this situation you should use HttpResponse::getBodyStream()
instead.
ContentType / MIME types
String toString(MimeType)()
has been moved out of the ContentType
namespace,
so no longer requires the ContentType::
qualifier.