Увеличить asio async_read (async_write) упаковщик - PullRequest
1 голос
/ 03 июля 2011

Я пытаюсь закодировать оболочку над boost :: asio :: ip :: tcp :: socket

Примерно так:

class Socket {
  public:
    void async_read(AsyncReadStream & s,                     
                    const boost::asio::MutableBufferSequence & buffers,   
                    CompletionCondition completion_condition,
                    ReadHandler handler) {};
};

Так что я бы мог без проблем использовать ssl и non-ssl stream ... Единственное, что я, кажется, не могу найти определение каждого параметра для передачи их в boost :: asio :: async_read (пространства имен и т. Д.)

Любая помощь будет оценена! Спасибо

1 Ответ

0 голосов
/ 03 июля 2011

Похоже, ваши основные требования: «использовать потоки SSL и не-SSL без проблем». Чтобы сделать это, вы можете обернуть различные типы потоков таким образом, чтобы получить доступ к функциям, которые вам нужно использовать.

Часть того, как вы это делаете, - это решение, как вы собираетесь управлять памятью. MutableBufferSequence не является типом, он определяет набор требований для типа, который будет использоваться в этом контексте.

Если вы собираетесь использовать один из небольшого числа подходов, вы можете просто использовать их в интерфейсе (при условии, что он соответствует требованиям MutableBufferSequence / ConstBufferSequence). Недостатком этого является то, что управление буфером становится частью интерфейса.

Если вы хотите сохранить гибкость управления буфером asio, вы можете

  • Создайте шаблон кода для типа потока, чтобы выполнить бесшовное требование SSL / не-SSL.

  • Создание оболочки для различных типов потоков с помощью шаблонных методов для типа буфера.

(Обновленный ответ; я не должен пытаться отвечать на такой вопрос, если у меня меньше двух минут!)

...