diff --git a/android/src/main/cpp/sonar.cpp b/android/src/main/cpp/sonar.cpp index bcc043292..c1965facc 100644 --- a/android/src/main/cpp/sonar.cpp +++ b/android/src/main/cpp/sonar.cpp @@ -13,7 +13,6 @@ #include #endif -#include #include #include #include @@ -24,7 +23,6 @@ #include #include #include -#include #include #include #include @@ -44,9 +42,6 @@ void handleException(const std::exception& e) { __android_log_write(ANDROID_LOG_ERROR, "FLIPPER", message.c_str()); } -std::unique_ptr sonarScheduler; -std::unique_ptr connectionScheduler; - class JEventBase : public jni::HybridClass { public: constexpr static auto kJavaDescriptor = @@ -417,7 +412,7 @@ class JFlipperSocketProvider : public facebook::flipper::FlipperSocketProvider { virtual std::unique_ptr create( facebook::flipper::FlipperConnectionEndpoint endpoint, std::unique_ptr payload, - facebook::flipper::Scheduler* scheduler) override { + folly::EventBase* eventBase) override { return std::make_unique( std::move(endpoint), std::move(payload)); ; @@ -425,7 +420,7 @@ class JFlipperSocketProvider : public facebook::flipper::FlipperSocketProvider { virtual std::unique_ptr create( FlipperConnectionEndpoint endpoint, std::unique_ptr payload, - facebook::flipper::Scheduler* scheduler, + folly::EventBase* eventBase, ConnectionContextStore* connectionContextStore) override { return std::make_unique( std::move(endpoint), std::move(payload), connectionContextStore); @@ -944,11 +939,6 @@ class JFlipperClient : public jni::HybridClass { const std::string app, const std::string appId, const std::string privateAppDirectory) { - sonarScheduler = - std::make_unique(callbackWorker->eventBase()); - connectionScheduler = - std::make_unique(connectionWorker->eventBase()); - FlipperClient::init( {{std::move(host), std::move(os), @@ -957,8 +947,8 @@ class JFlipperClient : public jni::HybridClass { std::move(app), std::move(appId), std::move(privateAppDirectory)}, - sonarScheduler.get(), - connectionScheduler.get(), + callbackWorker->eventBase(), + connectionWorker->eventBase(), insecurePort, securePort, altInsecurePort, diff --git a/iOS/FlipperKit/FlipperClient.mm b/iOS/FlipperKit/FlipperClient.mm index 17ffd172e..a7710e80a 100644 --- a/iOS/FlipperKit/FlipperClient.mm +++ b/iOS/FlipperKit/FlipperClient.mm @@ -10,8 +10,9 @@ #import "FlipperClient.h" #import #import -#import #import +#include +#include #include #import "FlipperClient+Testing.h" #import "FlipperCppWrapperPlugin.h" @@ -31,9 +32,8 @@ using WrapperPlugin = facebook::flipper::FlipperCppWrapperPlugin; @implementation FlipperClient { facebook::flipper::FlipperClient* _cppClient; - std::unique_ptr sonarScheduler; - std::unique_ptr connectionScheduler; - + folly::ScopedEventBaseThread sonarThread; + folly::ScopedEventBaseThread connectionThread; id _certProvider; #if !TARGET_OS_OSX && !TARGET_OS_SIMULATOR && !TARGET_OS_MACCATALYST FKPortForwardingServer* _secureServer; @@ -90,10 +90,6 @@ using WrapperPlugin = facebook::flipper::FlipperCppWrapperPlugin; deviceName = [[NSHost currentHost] localizedName]; #endif - sonarScheduler = - std::make_unique(); - connectionScheduler = - std::make_unique(); static const std::string UNKNOWN = std::string("unknown"); try { facebook::flipper::FlipperClient::init( @@ -106,8 +102,8 @@ using WrapperPlugin = facebook::flipper::FlipperCppWrapperPlugin; [appId UTF8String] ?: UNKNOWN, [privateAppDirectory UTF8String], }, - sonarScheduler.get(), - connectionScheduler.get(), + sonarThread.getEventBase(), + connectionThread.getEventBase(), [SKEnvironmentVariables getInsecurePort], [SKEnvironmentVariables getSecurePort], [SKEnvironmentVariables getAltInsecurePort], diff --git a/iOS/FlipperKit/FlipperWebSocket.h b/iOS/FlipperKit/FlipperWebSocket.h index 8231aa8a4..68cc2d2e9 100644 --- a/iOS/FlipperKit/FlipperWebSocket.h +++ b/iOS/FlipperKit/FlipperWebSocket.h @@ -9,11 +9,11 @@ #pragma once -#import #import #import #import #import +#import #import #import @@ -67,14 +67,14 @@ class FlipperWebSocketProvider : public FlipperSocketProvider { virtual std::unique_ptr create( FlipperConnectionEndpoint endpoint, std::unique_ptr payload, - Scheduler* scheduler) override { + folly::EventBase* eventBase) override { return std::make_unique( std::move(endpoint), std::move(payload)); } virtual std::unique_ptr create( FlipperConnectionEndpoint endpoint, std::unique_ptr payload, - Scheduler* scheduler, + folly::EventBase* eventBase, ConnectionContextStore* connectionContextStore) override { return std::make_unique( std::move(endpoint), std::move(payload), connectionContextStore); diff --git a/xplat/Flipper/FlipperClient.cpp b/xplat/Flipper/FlipperClient.cpp index 5f1e48ea7..09388bc58 100644 --- a/xplat/Flipper/FlipperClient.cpp +++ b/xplat/Flipper/FlipperClient.cpp @@ -8,7 +8,6 @@ #include "FlipperClient.h" #include #include -#include #include #include #include "ConnectionContextStore.h" diff --git a/xplat/Flipper/FlipperClient.h b/xplat/Flipper/FlipperClient.h index e535be99a..c13995acc 100644 --- a/xplat/Flipper/FlipperClient.h +++ b/xplat/Flipper/FlipperClient.h @@ -8,7 +8,6 @@ #pragma once #include -#include #include #include #include "FlipperCertificateProvider.h" diff --git a/xplat/Flipper/FlipperConnectionManagerImpl.cpp b/xplat/Flipper/FlipperConnectionManagerImpl.cpp index b52b1ed01..ee2dab331 100644 --- a/xplat/Flipper/FlipperConnectionManagerImpl.cpp +++ b/xplat/Flipper/FlipperConnectionManagerImpl.cpp @@ -95,8 +95,8 @@ FlipperConnectionManagerImpl::FlipperConnectionManagerImpl( securePort(config.securePort), altInsecurePort(config.altInsecurePort), altSecurePort(config.altSecurePort), - flipperScheduler_(config.callbackWorker), - connectionScheduler_(config.connectionWorker), + flipperEventBase_(config.callbackWorker), + connectionEventBase_(config.connectionWorker), contextStore_(contextStore), implWrapper_(std::make_shared(this)) { CHECK_THROW(config.callbackWorker, std::invalid_argument); @@ -131,10 +131,13 @@ void FlipperConnectionManagerImpl::start() { auto step = flipperState_->start("Start connection thread"); - flipperScheduler_->schedule([this, step]() { - step->complete(); - startSync(); - }); + folly::makeFuture() + .via(flipperEventBase_->getEventBase()) + .delayed(std::chrono::milliseconds(0)) + .thenValue([this, step](auto&&) { + step->complete(); + startSync(); + }); } void FlipperConnectionManagerImpl::startSync() { @@ -207,7 +210,7 @@ bool FlipperConnectionManagerImpl::connectAndExchangeCertificate() { payload->medium = medium; auto newClient = FlipperSocketProvider::socketCreate( - endpoint, std::move(payload), flipperScheduler_); + endpoint, std::move(payload), connectionEventBase_); newClient->setEventHandler(ConnectionEvents(implWrapper_)); auto connectingInsecurely = flipperState_->start("Connect insecurely"); @@ -256,7 +259,7 @@ bool FlipperConnectionManagerImpl::connectSecurely() { payload->csr_path = contextStore_->getCertificateDirectoryPath().c_str(); auto newClient = FlipperSocketProvider::socketCreate( - endpoint, std::move(payload), connectionScheduler_, contextStore_.get()); + endpoint, std::move(payload), connectionEventBase_, contextStore_.get()); newClient->setEventHandler(ConnectionEvents(implWrapper_)); newClient->setMessageHandler([this](const std::string& msg) { std::unique_ptr responder; @@ -291,8 +294,10 @@ void FlipperConnectionManagerImpl::reconnect() { log("Not started"); return; } - flipperScheduler_->scheduleAfter( - [this]() { startSync(); }, reconnectIntervalSeconds * 1000.0f); + folly::makeFuture() + .via(flipperEventBase_->getEventBase()) + .delayed(std::chrono::seconds(reconnectIntervalSeconds)) + .thenValue([this](auto&&) { startSync(); }); } void FlipperConnectionManagerImpl::stop() { @@ -320,7 +325,7 @@ void FlipperConnectionManagerImpl::setCallbacks(Callbacks* callbacks) { } void FlipperConnectionManagerImpl::sendMessage(const folly::dynamic& message) { - flipperScheduler_->schedule([this, message]() { + flipperEventBase_->add([this, message]() { try { if (client_) { client_->send(message, []() {}); @@ -452,11 +457,11 @@ void FlipperConnectionManagerImpl::requestSignedCertificate() { auto gettingCert = flipperState_->start("Getting cert from desktop"); certificateExchangeCompleted_ = false; - flipperScheduler_->schedule([this, message, gettingCert]() { + flipperEventBase_->add([this, message, gettingCert]() { client_->sendExpectResponse( folly::toJson(message), [this, gettingCert](const std::string& response, bool isError) { - flipperScheduler_->schedule([this, gettingCert, response, isError]() { + flipperEventBase_->add([this, gettingCert, response, isError]() { this->processSignedCertificateResponse( gettingCert, response, isError); }); @@ -466,7 +471,7 @@ void FlipperConnectionManagerImpl::requestSignedCertificate() { } bool FlipperConnectionManagerImpl::isRunningInOwnThread() { - return flipperScheduler_->isRunningInOwnThread(); + return flipperEventBase_->isInEventBaseThread(); } } // namespace flipper diff --git a/xplat/Flipper/FlipperConnectionManagerImpl.h b/xplat/Flipper/FlipperConnectionManagerImpl.h index e1653dee1..8861fdbf1 100644 --- a/xplat/Flipper/FlipperConnectionManagerImpl.h +++ b/xplat/Flipper/FlipperConnectionManagerImpl.h @@ -7,10 +7,11 @@ #pragma once +#include +#include #include #include "FlipperConnectionManager.h" #include "FlipperInitConfig.h" -#include "FlipperScheduler.h" #include "FlipperSocket.h" #include "FlipperState.h" @@ -63,8 +64,8 @@ class FlipperConnectionManagerImpl : public FlipperConnectionManager { int altInsecurePort; int altSecurePort; - Scheduler* flipperScheduler_; - Scheduler* connectionScheduler_; + folly::EventBase* flipperEventBase_; + folly::EventBase* connectionEventBase_; std::unique_ptr client_; diff --git a/xplat/Flipper/FlipperInitConfig.h b/xplat/Flipper/FlipperInitConfig.h index 7dd851310..252318c19 100644 --- a/xplat/Flipper/FlipperInitConfig.h +++ b/xplat/Flipper/FlipperInitConfig.h @@ -7,8 +7,8 @@ #pragma once +#include #include -#include "FlipperScheduler.h" namespace facebook { namespace flipper { @@ -30,14 +30,14 @@ struct FlipperInitConfig { DeviceData deviceData; /** - Scheduler on which client callbacks should be called. + EventBase on which client callbacks should be called. */ - Scheduler* callbackWorker; + folly::EventBase* callbackWorker; /** - Scheduler to be used to maintain the network connection. + EventBase to be used to maintain the network connection. */ - Scheduler* connectionWorker; + folly::EventBase* connectionWorker; int insecurePort = 9089; int securePort = 9088; diff --git a/xplat/Flipper/FlipperSocketProvider.cpp b/xplat/Flipper/FlipperSocketProvider.cpp index 17c3d4e73..456859903 100644 --- a/xplat/Flipper/FlipperSocketProvider.cpp +++ b/xplat/Flipper/FlipperSocketProvider.cpp @@ -21,19 +21,19 @@ std::unique_ptr FlipperSocketProvider::shelvedProvider_ = std::unique_ptr FlipperSocketProvider::socketCreate( FlipperConnectionEndpoint endpoint, std::unique_ptr payload, - Scheduler* scheduler) { - return provider_->create(std::move(endpoint), std::move(payload), scheduler); + folly::EventBase* eventBase) { + return provider_->create(std::move(endpoint), std::move(payload), eventBase); } std::unique_ptr FlipperSocketProvider::socketCreate( FlipperConnectionEndpoint endpoint, std::unique_ptr payload, - Scheduler* scheduler, + folly::EventBase* eventBase, ConnectionContextStore* connectionContextStore) { return provider_->create( std::move(endpoint), std::move(payload), - scheduler, + eventBase, connectionContextStore); } diff --git a/xplat/Flipper/FlipperSocketProvider.h b/xplat/Flipper/FlipperSocketProvider.h index 8e26f38aa..33875a9e7 100644 --- a/xplat/Flipper/FlipperSocketProvider.h +++ b/xplat/Flipper/FlipperSocketProvider.h @@ -7,8 +7,8 @@ #pragma once +#include #include -#include "FlipperScheduler.h" namespace facebook { namespace flipper { @@ -32,37 +32,35 @@ class FlipperSocketProvider { @param endpoint Endpoint to connect to. @param payload Any configuration payload to establish a connection with the specified endpoint. - @param scheduler An scheduler used to schedule and execute connection - operations. + @param eventBase A folly event base used to execute connection operations. */ virtual std::unique_ptr create( FlipperConnectionEndpoint endpoint, std::unique_ptr payload, - Scheduler* scheduler) = 0; + folly::EventBase* eventBase) = 0; /** Create an instance of FlipperSocket. @param endpoint Endpoint to connect to. @param payload Any configuration payload to establish a connection with the specified endpoint. - @param scheduler An scheduler used to schedule and execute connection - operations. + @param eventBase A folly event base used to execute connection operations. @param connectionContextStore A connection context store used for obtaining the certificate used for secure connections. */ virtual std::unique_ptr create( FlipperConnectionEndpoint endpoint, std::unique_ptr payload, - Scheduler* scheduler, + folly::EventBase* eventBase, ConnectionContextStore* connectionContextStore) = 0; static std::unique_ptr socketCreate( FlipperConnectionEndpoint endpoint, std::unique_ptr payload, - Scheduler* scheduler); + folly::EventBase* eventBase); static std::unique_ptr socketCreate( FlipperConnectionEndpoint endpoint, std::unique_ptr payload, - Scheduler* scheduler, + folly::EventBase* eventBase, ConnectionContextStore* connectionContextStore); static void setDefaultProvider( diff --git a/xplat/FlipperTests/FlipperConnectionManagerImplTerminationTests.cpp b/xplat/FlipperTests/FlipperConnectionManagerImplTerminationTests.cpp index 9ee334257..3c51d818b 100644 --- a/xplat/FlipperTests/FlipperConnectionManagerImplTerminationTests.cpp +++ b/xplat/FlipperTests/FlipperConnectionManagerImplTerminationTests.cpp @@ -6,11 +6,10 @@ */ #include -#include #include #include + #include -#include namespace facebook { namespace flipper { @@ -22,16 +21,12 @@ class FlipperConnectionManagerImplTerminationTest : public ::testing::Test { protected: std::shared_ptr state; std::shared_ptr contextStore; - std::unique_ptr sonarScheduler; - std::unique_ptr connectionScheduler; void SetUp() override { // Folly singletons must be registered before they are used. // Without this, test fails in phabricator. folly::SingletonVault::singleton()->registrationComplete(); state = std::make_shared(); contextStore = std::make_shared(); - sonarScheduler = std::make_unique(new EventBase()); - connectionScheduler = std::make_unique(new EventBase()); } }; @@ -40,7 +35,7 @@ TEST_F( testNullEventBaseGetsRejected) { try { auto instance = std::make_shared( - FlipperInitConfig{DeviceData{}, nullptr, connectionScheduler.get()}, + FlipperInitConfig{DeviceData{}, nullptr, new EventBase()}, state, contextStore); FAIL(); @@ -49,7 +44,7 @@ TEST_F( } try { auto instance = std::make_shared( - FlipperInitConfig{DeviceData{}, sonarScheduler.get(), nullptr}, + FlipperInitConfig{DeviceData{}, new EventBase(), nullptr}, state, contextStore); FAIL(); @@ -61,8 +56,8 @@ TEST_F( TEST_F( FlipperConnectionManagerImplTerminationTest, testNonStartedEventBaseDoesntHang) { - auto config = FlipperInitConfig{ - DeviceData{}, sonarScheduler.get(), connectionScheduler.get()}; + auto config = + FlipperInitConfig{DeviceData{}, new EventBase(), new EventBase()}; auto instance = std::make_shared( config, state, contextStore); instance->start(); @@ -77,11 +72,8 @@ TEST_F( std::thread([flipperEventBase]() { flipperEventBase->loopForever(); }); auto connectionThread = std::thread( [connectionEventBase]() { connectionEventBase->loopForever(); }); - auto localSonarScheduler = std::make_unique(flipperEventBase); - auto localConnectionScheduler = - std::make_unique(connectionEventBase); - auto config = FlipperInitConfig{ - DeviceData{}, localSonarScheduler.get(), localConnectionScheduler.get()}; + auto config = + FlipperInitConfig{DeviceData{}, flipperEventBase, connectionEventBase}; auto instance = std::make_shared( config, state, contextStore); diff --git a/xplat/FlipperWebSocket/BaseClient.h b/xplat/FlipperWebSocket/BaseClient.h index 053987e88..36fd59e8e 100644 --- a/xplat/FlipperWebSocket/BaseClient.h +++ b/xplat/FlipperWebSocket/BaseClient.h @@ -9,11 +9,11 @@ #pragma once -#include #include #include #include #include +#include #include #include #include @@ -37,18 +37,18 @@ class BaseClient { BaseClient( FlipperConnectionEndpoint endpoint, std::unique_ptr payload, - Scheduler* scheduler) + folly::EventBase* eventBase) : endpoint_(std::move(endpoint)), payload_(std::move(payload)), - scheduler_(scheduler) {} + eventBase_(eventBase) {} BaseClient( FlipperConnectionEndpoint endpoint, std::unique_ptr payload, - Scheduler* scheduler, + folly::EventBase* eventBase, ConnectionContextStore* connectionContextStore) : endpoint_(std::move(endpoint)), payload_(std::move(payload)), - scheduler_(scheduler), + eventBase_(eventBase), connectionContextStore_(connectionContextStore) {} BaseClient(const BaseClient&) = delete; @@ -84,7 +84,7 @@ class BaseClient { protected: FlipperConnectionEndpoint endpoint_; std::unique_ptr payload_; - Scheduler* scheduler_; + folly::EventBase* eventBase_; ConnectionContextStore* connectionContextStore_; SocketEventHandler eventHandler_; diff --git a/xplat/FlipperWebSocket/FlipperWebSocket.cpp b/xplat/FlipperWebSocket/FlipperWebSocket.cpp index b01dd5618..2d74afbfe 100644 --- a/xplat/FlipperWebSocket/FlipperWebSocket.cpp +++ b/xplat/FlipperWebSocket/FlipperWebSocket.cpp @@ -14,6 +14,8 @@ #include #include #include +#include +#include #include #include #include @@ -30,24 +32,24 @@ namespace flipper { FlipperWebSocket::FlipperWebSocket( FlipperConnectionEndpoint endpoint, std::unique_ptr payload, - Scheduler* scheduler) + folly::EventBase* eventBase) : FlipperWebSocket( std::move(endpoint), std::move(payload), - scheduler, + eventBase, nullptr) {} FlipperWebSocket::FlipperWebSocket( FlipperConnectionEndpoint endpoint, std::unique_ptr payload, - Scheduler* scheduler, + folly::EventBase* eventBase, ConnectionContextStore* connectionContextStore) { if (endpoint.secure) { socket_ = std::make_unique( - endpoint, std::move(payload), scheduler, connectionContextStore); + endpoint, std::move(payload), eventBase, connectionContextStore); } else { socket_ = std::make_unique( - endpoint, std::move(payload), scheduler, connectionContextStore); + endpoint, std::move(payload), eventBase, connectionContextStore); } } diff --git a/xplat/FlipperWebSocket/FlipperWebSocket.h b/xplat/FlipperWebSocket/FlipperWebSocket.h index 700c940bb..ebe202004 100644 --- a/xplat/FlipperWebSocket/FlipperWebSocket.h +++ b/xplat/FlipperWebSocket/FlipperWebSocket.h @@ -9,11 +9,11 @@ #pragma once -#include #include #include #include #include +#include #include #include #include @@ -29,11 +29,11 @@ class FlipperWebSocket : public FlipperSocket { FlipperWebSocket( FlipperConnectionEndpoint endpoint, std::unique_ptr payload, - Scheduler* scheduler); + folly::EventBase* eventBase); FlipperWebSocket( FlipperConnectionEndpoint endpoint, std::unique_ptr payload, - Scheduler* scheduler, + folly::EventBase* eventBase, ConnectionContextStore* connectionContextStore); virtual ~FlipperWebSocket(); @@ -62,19 +62,19 @@ class FlipperWebSocketProvider : public FlipperSocketProvider { virtual std::unique_ptr create( FlipperConnectionEndpoint endpoint, std::unique_ptr payload, - Scheduler* scheduler) override { + folly::EventBase* eventBase) override { return std::make_unique( - std::move(endpoint), std::move(payload), scheduler); + std::move(endpoint), std::move(payload), eventBase); } virtual std::unique_ptr create( FlipperConnectionEndpoint endpoint, std::unique_ptr payload, - Scheduler* scheduler, + folly::EventBase* eventBase, ConnectionContextStore* connectionContextStore) override { return std::make_unique( std::move(endpoint), std::move(payload), - scheduler, + eventBase, connectionContextStore); } }; diff --git a/xplat/FlipperWebSocket/WebSocketClient.cpp b/xplat/FlipperWebSocket/WebSocketClient.cpp index f50c788c1..b828a61b3 100644 --- a/xplat/FlipperWebSocket/WebSocketClient.cpp +++ b/xplat/FlipperWebSocket/WebSocketClient.cpp @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -30,22 +31,22 @@ namespace flipper { WebSocketClient::WebSocketClient( FlipperConnectionEndpoint endpoint, std::unique_ptr payload, - Scheduler* scheduler) + folly::EventBase* eventBase) : WebSocketClient( std::move(endpoint), std::move(payload), - scheduler, + eventBase, nullptr) {} WebSocketClient::WebSocketClient( FlipperConnectionEndpoint endpoint, std::unique_ptr payload, - Scheduler* scheduler, + folly::EventBase* eventBase, ConnectionContextStore* connectionContextStore) : BaseClient( std::move(endpoint), std::move(payload), - scheduler, + eventBase, connectionContextStore) { status_ = Status::Unconnected; @@ -147,7 +148,7 @@ void WebSocketClient::disconnect() { thread_->join(); } thread_ = nullptr; - scheduler_->schedule( + eventBase_->add( [eventHandler = eventHandler_]() { eventHandler(SocketEvent::CLOSE); }); } @@ -179,12 +180,12 @@ void WebSocketClient::send( void WebSocketClient::sendExpectResponse( const std::string& message, SocketSendExpectResponseHandler completion) { - connection_->set_message_handler([completion, scheduler = scheduler_]( - websocketpp::connection_hdl hdl, - SocketClient::message_ptr msg) { - const std::string& payload = msg->get_payload(); - scheduler->schedule([completion, payload] { completion(payload, false); }); - }); + connection_->set_message_handler( + [completion, eventBase = eventBase_]( + websocketpp::connection_hdl hdl, SocketClient::message_ptr msg) { + const std::string& payload = msg->get_payload(); + eventBase->add([completion, payload] { completion(payload, false); }); + }); websocketpp::lib::error_code ec; socket_.send( handle_, @@ -204,7 +205,7 @@ void WebSocketClient::onOpen(SocketClient* c, websocketpp::connection_hdl hdl) { } status_ = Status::Initializing; - scheduler_->schedule( + eventBase_->add( [eventHandler = eventHandler_]() { eventHandler(SocketEvent::OPEN); }); } @@ -214,7 +215,7 @@ void WebSocketClient::onMessage( SocketClient::message_ptr msg) { const std::string& payload = msg->get_payload(); if (messageHandler_) { - scheduler_->schedule([payload, messageHandler = messageHandler_]() { + eventBase_->add([payload, messageHandler = messageHandler_]() { messageHandler(payload); }); } @@ -229,7 +230,7 @@ void WebSocketClient::onFail(SocketClient* c, websocketpp::connection_hdl hdl) { connected_.set_value(false); } status_ = Status::Failed; - scheduler_->schedule( + eventBase_->add( [eventHandler = eventHandler_]() { eventHandler(SocketEvent::ERROR); }); } @@ -237,7 +238,7 @@ void WebSocketClient::onClose( SocketClient* c, websocketpp::connection_hdl hdl) { status_ = Status::Closed; - scheduler_->schedule( + eventBase_->add( [eventHandler = eventHandler_]() { eventHandler(SocketEvent::CLOSE); }); } diff --git a/xplat/FlipperWebSocket/WebSocketClient.h b/xplat/FlipperWebSocket/WebSocketClient.h index 47331d7ec..d08a915c7 100644 --- a/xplat/FlipperWebSocket/WebSocketClient.h +++ b/xplat/FlipperWebSocket/WebSocketClient.h @@ -9,11 +9,11 @@ #pragma once -#include #include #include #include #include +#include #include #include #include @@ -35,11 +35,11 @@ class WebSocketClient : public BaseClient { WebSocketClient( FlipperConnectionEndpoint endpoint, std::unique_ptr payload, - Scheduler* scheduler); + folly::EventBase* eventBase); WebSocketClient( FlipperConnectionEndpoint endpoint, std::unique_ptr payload, - Scheduler* scheduler, + folly::EventBase* eventBase, ConnectionContextStore* connectionContextStore); WebSocketClient(const WebSocketClient&) = delete; diff --git a/xplat/FlipperWebSocket/WebSocketTLSClient.cpp b/xplat/FlipperWebSocket/WebSocketTLSClient.cpp index 24fa9bb49..f4b029797 100644 --- a/xplat/FlipperWebSocket/WebSocketTLSClient.cpp +++ b/xplat/FlipperWebSocket/WebSocketTLSClient.cpp @@ -33,22 +33,22 @@ namespace flipper { WebSocketTLSClient::WebSocketTLSClient( FlipperConnectionEndpoint endpoint, std::unique_ptr payload, - Scheduler* scheduler) + folly::EventBase* eventBase) : WebSocketTLSClient( std::move(endpoint), std::move(payload), - scheduler, + eventBase, nullptr) {} WebSocketTLSClient::WebSocketTLSClient( FlipperConnectionEndpoint endpoint, std::unique_ptr payload, - Scheduler* scheduler, + folly::EventBase* eventBase, ConnectionContextStore* connectionContextStore) : BaseClient( std::move(endpoint), std::move(payload), - scheduler, + eventBase, connectionContextStore) { status_ = Status::Unconnected; @@ -157,7 +157,7 @@ void WebSocketTLSClient::disconnect() { } thread_ = nullptr; - scheduler_->schedule( + eventBase_->add( [eventHandler = eventHandler_]() { eventHandler(SocketEvent::CLOSE); }); } @@ -189,12 +189,12 @@ void WebSocketTLSClient::send( void WebSocketTLSClient::sendExpectResponse( const std::string& message, SocketSendExpectResponseHandler completion) { - connection_->set_message_handler([completion, scheduler = scheduler_]( - websocketpp::connection_hdl hdl, - SocketTLSClient::message_ptr msg) { - const std::string& payload = msg->get_payload(); - scheduler->schedule([completion, payload] { completion(payload, false); }); - }); + connection_->set_message_handler( + [completion, eventBase = eventBase_]( + websocketpp::connection_hdl hdl, SocketTLSClient::message_ptr msg) { + const std::string& payload = msg->get_payload(); + eventBase->add([completion, payload] { completion(payload, false); }); + }); websocketpp::lib::error_code ec; socket_.send( handle_, @@ -216,7 +216,7 @@ void WebSocketTLSClient::onOpen( } status_ = Status::Initializing; - scheduler_->schedule( + eventBase_->add( [eventHandler = eventHandler_]() { eventHandler(SocketEvent::OPEN); }); } @@ -226,7 +226,7 @@ void WebSocketTLSClient::onMessage( SocketTLSClient::message_ptr msg) { const std::string& payload = msg->get_payload(); if (messageHandler_) { - scheduler_->schedule([payload, messageHandler = messageHandler_]() { + eventBase_->add([payload, messageHandler = messageHandler_]() { messageHandler(payload); }); } @@ -257,7 +257,7 @@ void WebSocketTLSClient::onFail( } } status_ = Status::Failed; - scheduler_->schedule([eventHandler = eventHandler_, sslError]() { + eventBase_->add([eventHandler = eventHandler_, sslError]() { if (sslError) { eventHandler(SocketEvent::SSL_ERROR); } else { @@ -270,7 +270,7 @@ void WebSocketTLSClient::onClose( SocketTLSClient* c, websocketpp::connection_hdl hdl) { status_ = Status::Closed; - scheduler_->schedule( + eventBase_->add( [eventHandler = eventHandler_]() { eventHandler(SocketEvent::CLOSE); }); } diff --git a/xplat/FlipperWebSocket/WebSocketTLSClient.h b/xplat/FlipperWebSocket/WebSocketTLSClient.h index 398037973..69dfa0abd 100644 --- a/xplat/FlipperWebSocket/WebSocketTLSClient.h +++ b/xplat/FlipperWebSocket/WebSocketTLSClient.h @@ -13,6 +13,7 @@ #include #include #include +#include #include #include #include @@ -38,11 +39,11 @@ class WebSocketTLSClient : public BaseClient { WebSocketTLSClient( FlipperConnectionEndpoint endpoint, std::unique_ptr payload, - Scheduler* scheduler); + folly::EventBase* eventBase); WebSocketTLSClient( FlipperConnectionEndpoint endpoint, std::unique_ptr payload, - Scheduler* scheduler, + folly::EventBase* eventBase, ConnectionContextStore* connectionContextStore); WebSocketTLSClient(const WebSocketTLSClient&) = delete;