2011-07-02 41 views
1

我想编写了一个boost :: ASIO :: IP :: TCP ::插座加速ASIO async_read(ASYNC_WRITE)包装

类似的东西的包装:

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

所以我将能够无缝地使用ssl和非ssl流... 唯一的一点是,我似乎没有找到每个参数的定义来传递它们以boost :: asio :: async_read(命名空间等。 )

任何帮助,将不胜感激!谢谢

回答

0

您的主要需求似乎是“无缝使用SSL和非SSL流”。要做到这一点,你可以用暴露你需要使用的函数的方式来包装各种流类型。

你如何做的一部分是决定你如何进行内存管理。 MutableBufferSequence不是一个类型,它为在该上下文中使用的类型定义了一组需求。

如果您打算使用少数几种方法之一,您可以在界面中使用它们(只要符合MutableBufferSequence/ConstBufferSequence要求,就可以)。这个缺点是缓冲区管理成为界面的一部分。

如果你想保持ASIO缓冲管理的灵活性,你可以

  • 模板,以便您的流类型代码实现无缝SSL /非SSL要求。

  • 使用缓冲区类型上的模板化方法为各种流类型创建包装。

(更新响应;我不应该去到这样一个问题作出回应时,我有不到两分钟!)

+0

途径复杂的解决方案,但似乎是唯一的一个...我想我现在会推迟使用ssl和非ssl流的能力。谢谢 ! – TheSquad

相关问题