From 16cfdc709b12eb9e1d1476db3bef852a81a680d4 Mon Sep 17 00:00:00 2001 From: Ivan Pelipenko Date: Thu, 8 Oct 2020 22:29:47 +0300 Subject: [PATCH] new PIChunkStream::extract() method --- libs/main/core/pichunkstream.cpp | 9 +++++++++ libs/main/core/pichunkstream.h | 3 +++ 2 files changed, 12 insertions(+) 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);