gloo/transport/tcp/tls/pair.h (34 lines of code) (raw):

/** * Copyright (c) 2020-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. */ #pragma once #include "gloo/transport/tcp/pair.h" #include "gloo/transport/tcp/tls/openssl.h" namespace gloo { namespace transport { namespace tcp { namespace tls { class Context; class Device; class Pair : public ::gloo::transport::tcp::Pair { public: explicit Pair(Context *context, Device *device, int rank, std::chrono::milliseconds timeout); ~Pair() override; void handleReadWrite(int events) override; protected: void waitUntilConnected(std::unique_lock<std::mutex> &lock, bool useTimeout) override; int handshake(); bool read() override; bool write(Op &op) override; void waitUntilSSLConnected(std::unique_lock<std::mutex> &lock, bool useTimeout); void verifyConnected() override; void changeState(state nextState) noexcept override; SSL *ssl_; SSL_CTX *ssl_ctx_; // non-owning pointer bool is_ssl_connected_; bool fatal_error_occurred_; }; } // namespace tls } // namespace tcp } // namespace transport } // namespace gloo