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