我可以重用boost :: ssl :: stream吗?

时间:2016-02-09 14:25:13

标签: c++ ssl boost boost-asio

假设我使用boost::asio::ssl::stream<boost::asio::ip::tcp::socket>

asio::ssl::stream<asio::ip::tcp::socket> s;
asio::connect(s.lowest_layer(), endpointIterator);
s.handshake(asio::ssl::stream_base::client);

等等。然后由于某种原因连接失败,甚至我断开连接。是否可以将其重用于将来的连接,还是必须为每个连接创建一个新对象?即包装流,像这样:

class BetterSslConnection
{
public:
    BetterSslConnection() : mSocket(new asio::ssl::stream<asio::ip::tcp::socket>()) 
    {
    }

    ~BetterSslConnection()
    {
        if (mSocket)
        {
            mSocket->shutdown();
            mSocket->lowest_layer().close();
        }
    }

    void connect(... endpointIterator)
    {
        if (mSocket)
        {
            mSocket->shutdown();
            mSocket->lowest_layer().close();
        }
        mSocket.reset(new asio::ssl::stream<asio::ip::tcp::socket>());

        asio::connect(mSocket->lowest_layer(), endpointIterator);
        mSocket->handshake(asio::ssl::stream_base::client);
        // and so on.
    }

private:
    unique_ptr<asio::ssl::stream<asio::ip::tcp::socket>> mSocket;

};

类BetterSslConnection {

0 个答案:

没有答案