diff --git a/libs/main/core/pichunkstream.cpp b/libs/main/core/pichunkstream.cpp index c80455d3..7920f1b4 100644 --- a/libs/main/core/pichunkstream.cpp +++ b/libs/main/core/pichunkstream.cpp @@ -115,7 +115,16 @@ void PIChunkStream::readAll() { PIChunkStream::~PIChunkStream() { +} + +bool PIChunkStream::extract(PIByteArray & data) { + if (data.size_s() < 4) return false; + data >> tmp_data; + if (tmp_data.size_s() < 4) return false; + data_ = &tmp_data; + _init(); + return true; } diff --git a/libs/main/core/pichunkstream.h b/libs/main/core/pichunkstream.h index 89dad97d..d771143b 100644 --- a/libs/main/core/pichunkstream.h +++ b/libs/main/core/pichunkstream.h @@ -67,6 +67,9 @@ public: //! Add data to this chunk strean with ID "id" and value "data" template PIChunkStream & add(int id, const T & data) {*this << ChunkConst(id, data); return *this;} + //! Extract %PIByteArray from "data" and set it current stream. Returns if has data to read. + bool extract(PIByteArray & data); + void setSource(const PIByteArray & data); void setSource(PIByteArray * data);