From 3afa0ce0ab2ecb96f5b0fa3c06e9d312976aa385 Mon Sep 17 00:00:00 2001 From: peri4 Date: Wed, 30 Aug 2023 17:08:11 +0300 Subject: [PATCH] PIChunkStream::extract changed to PIBinaryStream --- libs/main/serialization/pichunkstream.cpp | 11 ----------- libs/main/serialization/pichunkstream.h | 14 +++++++++++--- 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/libs/main/serialization/pichunkstream.cpp b/libs/main/serialization/pichunkstream.cpp index 0da8b364..120ecd1a 100644 --- a/libs/main/serialization/pichunkstream.cpp +++ b/libs/main/serialization/pichunkstream.cpp @@ -183,17 +183,6 @@ void PIChunkStream::readAll() { PIChunkStream::~PIChunkStream() {} -bool PIChunkStream::extract(PIByteArray & data, bool read_all) { - if (data.size_s() < 4) return false; - data >> tmp_data; - if (tmp_data.size_s() < 4) return false; - data_ = &tmp_data; - _init(); - if (read_all) readAll(); - return true; -} - - void PIChunkStream::_init() { first_byte_taken = false; last_id = -1; diff --git a/libs/main/serialization/pichunkstream.h b/libs/main/serialization/pichunkstream.h index 6bf88a92..8da86ed1 100644 --- a/libs/main/serialization/pichunkstream.h +++ b/libs/main/serialization/pichunkstream.h @@ -89,14 +89,22 @@ public: } //! \~english - //! Extract %PIByteArray from "data" and set it current stream. + //! Extract %PIByteArray from "stream" and set it current stream. //! If "read_all" then call \a readAll() after extract. //! Returns if has data to read. //! \~russian - //! Извлекает %PIByteArray из "data" и инициализирует им поток. + //! Извлекает %PIByteArray из "stream" и инициализирует им поток. //! Если указан "read_all", то вызывает \a readAll() после инициализации. //! Возвращает если ли данные для чтения. - bool extract(PIByteArray & data, bool read_all = false); + template + bool extract(PIBinaryStream & stream, bool read_all = false) { + stream >> tmp_data; + if (stream.wasReadError() || tmp_data.size_s() < 4) return false; + data_ = &tmp_data; + _init(); + if (read_all) readAll(); + return true; + } void setSource(const PIByteArray & data); void setSource(PIByteArray * data);