63 lines
2.6 KiB
C++
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
|