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