47 lines
1.9 KiB
C++
47 lines
1.9 KiB
C++
|
|
//
|
|||
|
|
// Created by laputin on 06.05.2023.
|
|||
|
|
//
|
|||
|
|
|
|||
|
|
#ifndef UMLIBRARY_COMMUNICATION_I_BINARY_DATA_ISSUER_HH
|
|||
|
|
#define UMLIBRARY_COMMUNICATION_I_BINARY_DATA_ISSUER_HH
|
|||
|
|
|
|||
|
|
#include <cstddef>
|
|||
|
|
|
|||
|
|
namespace communication {
|
|||
|
|
|
|||
|
|
/*!
|
|||
|
|
* Интерфейс абонента предоставляющего бинарные данные.
|
|||
|
|
*/
|
|||
|
|
struct IBinaryDataIssuer {
|
|||
|
|
/*!Метод предоставления бинарных данных.
|
|||
|
|
* Метод должен записать свои данные в бинарной форме по предоставленному указателю с нулевым смещением,
|
|||
|
|
* но не более чем size байт.
|
|||
|
|
* @param data Буфер данных для записи своих данных.
|
|||
|
|
* @param size Размер буфера данных.
|
|||
|
|
*/
|
|||
|
|
virtual void write( void * data, std::size_t size ) = 0;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
/*!
|
|||
|
|
* Интерфейс обработчика события предоставления бинарных данных.
|
|||
|
|
*/
|
|||
|
|
struct IBinaryDataWriteEvent {
|
|||
|
|
virtual void write_event( IBinaryDataIssuer & issuer ) = 0;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
/*!
|
|||
|
|
* Интерфейс регистрации абонентов предоставляющего бинарные данные.
|
|||
|
|
*/
|
|||
|
|
struct IIssuerRegistrator {
|
|||
|
|
/*!Метод регистрации абонента предоставляющего бинарные данные.
|
|||
|
|
*
|
|||
|
|
* @param bit_address Адрес данных абонента для записи внутри фрейма данных.
|
|||
|
|
* @param bit_len - Длина данных абонента для записи внутри фрейма данных.
|
|||
|
|
* @param subscriber - Указатель на зарегестрированного абонента.
|
|||
|
|
*/
|
|||
|
|
virtual void addIssuer( std::size_t bit_address, std::size_t bit_len, IBinaryDataIssuer * subscriber ) = 0;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
} // namespace communication
|
|||
|
|
|
|||
|
|
#endif // UMLIBRARY_COMMUNICATION_I_BINARY_DATA_ISSUER_HH
|