/* * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ #ifdef FB_SONARKIT_ENABLED #pragma once #include #include #include #include #include #include #include #include "BaseClient.h" #include #include #include namespace facebook { namespace flipper { typedef websocketpp::client SocketTLSClient; typedef websocketpp::lib::shared_ptr SocketTLSThread; typedef websocketpp::lib::shared_ptr SocketTLSContext; class FlipperConnectionManager; class ConnectionContextStore; class WebSocketTLSClient : public BaseClient { public: WebSocketTLSClient( FlipperConnectionEndpoint endpoint, std::unique_ptr payload, Scheduler* scheduler); WebSocketTLSClient( FlipperConnectionEndpoint endpoint, std::unique_ptr payload, Scheduler* scheduler, ConnectionContextStore* connectionContextStore); WebSocketTLSClient(const WebSocketTLSClient&) = delete; WebSocketTLSClient& operator=(const WebSocketTLSClient&) = delete; virtual ~WebSocketTLSClient(); virtual bool connect(FlipperConnectionManager* manager) override; virtual void disconnect() override; virtual void send(const folly::dynamic& message, SocketSendHandler completion) override; virtual void send(const std::string& message, SocketSendHandler completion) override; virtual void sendExpectResponse( const std::string& message, SocketSendExpectResponseHandler completion) override; private: void onOpen(SocketTLSClient*, websocketpp::connection_hdl); void onMessage( SocketTLSClient*, websocketpp::connection_hdl, SocketTLSClient::message_ptr); void onFail(SocketTLSClient*, websocketpp::connection_hdl); void onClose(SocketTLSClient*, websocketpp::connection_hdl); SocketTLSContext onTLSInit(const char*, websocketpp::connection_hdl); SocketTLSClient socket_; SocketTLSClient::connection_ptr connection_; SocketTLSThread thread_; websocketpp::connection_hdl handle_; std::promise connected_; }; } // namespace flipper } // namespace facebook #endif