// // Created by laputin on 06.05.2023. // #ifndef UMLIBRARY_COMMUNICATION_I_BINARY_DATA_SUBSCRIBER_HH #define UMLIBRARY_COMMUNICATION_I_BINARY_DATA_SUBSCRIBER_HH #include 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