Как создать собственный объект ввода-вывода для Boost.Asio

У меня есть базовый класс (DeviceBase), представляющий встроенное устройство, с которым я хочу общаться. Доступ к устройству возможен различными способами, включая разъемы USB и TCP. Кроме того, есть фиктивная реализация, которая работает с файлами.

До сих пор я использовал только синхронные вызовы чтения / записи, и все реализации - это просто классы, производные от базового класса, переопределяющие функции чтения / записи. Это позволяет мне использовать полиморфные указатели и контейнеры для обеспечения независимого от реализации доступа к устройству для приложения ».логика

Теперь я хочу использовать Boost.Asio, чтобы включить простой асинхронный ввод-вывод. Я нашел это руководствоhttp://www.highscore.de/cpp/boost/asio.html описывающий, как написать свои собственные расширения, но это довольно упрощено, и я наткнулся на некоторые проблемы, которые не 'там обсуждали

В настоящее время все мои реализации имеют разные конструкторы (очевидно, из-за разных способов адресации / инициализации соединения с устройством). Класс реализации, представленный в руководстве, создан io_service, что означает, что пользователь можетпередать аргументы конструктору.

Пример в руководстве предоставляет шаблон класса в видеcustom_io_object, что предотвратило бы использование полиморфных указателей, потому что теперь нет общего базового класса для различных типов объектов ввода-вывода.

Есть ли какая-либо документация или книги, в которых обсуждается дизайн расширений Boost.Asio? Я что-то упускаю?

Ответы на вопрос(1)

Ваш ответ на вопрос