Files
pip/libs/main/io_utils/pidatatransfer.h
2026-03-07 17:00:45 +03:00

63 lines
2.6 KiB
C++

/*! \file pidatatransfer.h
* \ingroup IO-Utils
* \~\brief
* \~english Transfer helper for raw \a PIByteArray payloads over \a PIBaseTransfer
* \~russian Вспомогательный класс передачи сырых данных \a PIByteArray поверх \a PIBaseTransfer
*/
/*
PIP - Platform Independent Primitives
Class for send and receive PIByteArray via PIBaseTransfer
Andrey Bychkov work.a.b@yandex.ru
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef PIDATATRANSFER_H
#define PIDATATRANSFER_H
#include "pibasetransfer.h"
//! \ingroup IO-Utils
//! \~\brief
//! \~english Ready-to-use transfer for one contiguous \a PIByteArray payload.
//! \~russian Готовая передача для одной непрерывной полезной нагрузки \a PIByteArray.
class PIP_EXPORT PIDataTransfer: public PIBaseTransfer {
PIOBJECT_SUBCLASS(PIDataTransfer, PIBaseTransfer);
public:
//! \~english Constructs byte-array transfer.
//! \~russian Создает передачу массива байтов.
PIDataTransfer() { ; }
//! \~english Destroys byte-array transfer.
//! \~russian Уничтожает передачу массива байтов.
~PIDataTransfer() { ; }
//! \~english Sends "ba" as a single logical item through the base transfer session.
//! \~russian Отправляет "ba" как один логический элемент через базовую сессию передачи.
bool send(const PIByteArray & ba);
//! \~english Returns the internal byte buffer used for the current or last transfer.
//! \~russian Возвращает внутренний буфер байтов для текущей или последней передачи.
const PIByteArray & data() { return data_; }
private:
PIByteArray buildPacket(Part p) override;
void receivePart(PIBaseTransfer::Part fi, PIByteArray ba, PIByteArray pheader) override;
void beginReceive() override;
PIByteArray data_;
};
#endif // PIDATATRANSFER_H