From 0069155b1e305683f03542b0f5ca3d4dc4d3d880 Mon Sep 17 00:00:00 2001 From: Nikita Lutsenko Date: Tue, 16 May 2023 14:15:04 -0700 Subject: [PATCH] flipper | Replace global static variables in FlipperSocketProvider with local static. Summary: Replacing global static varaibles with local static. No cost at startup time, and also fixes any potential static initialization order fiasco. Differential Revision: D45900297 fbshipit-source-id: 80e3ffb6527f7f7b6b08de4a6209f0f8298f7bf5 --- xplat/Flipper/FlipperSocketProvider.cpp | 19 ++++++++++--------- xplat/Flipper/FlipperSocketProvider.h | 3 +-- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/xplat/Flipper/FlipperSocketProvider.cpp b/xplat/Flipper/FlipperSocketProvider.cpp index 17c3d4e73..824396c90 100644 --- a/xplat/Flipper/FlipperSocketProvider.cpp +++ b/xplat/Flipper/FlipperSocketProvider.cpp @@ -12,17 +12,18 @@ namespace facebook { namespace flipper { -std::unique_ptr FlipperSocketProvider::provider_ = - nullptr; - -std::unique_ptr FlipperSocketProvider::shelvedProvider_ = - nullptr; +std::unique_ptr& +FlipperSocketProvider::defaultProvider() { + static std::unique_ptr provider; + return provider; +} std::unique_ptr FlipperSocketProvider::socketCreate( FlipperConnectionEndpoint endpoint, std::unique_ptr payload, Scheduler* scheduler) { - return provider_->create(std::move(endpoint), std::move(payload), scheduler); + return defaultProvider()->create( + std::move(endpoint), std::move(payload), scheduler); } std::unique_ptr FlipperSocketProvider::socketCreate( @@ -30,7 +31,7 @@ std::unique_ptr FlipperSocketProvider::socketCreate( std::unique_ptr payload, Scheduler* scheduler, ConnectionContextStore* connectionContextStore) { - return provider_->create( + return defaultProvider()->create( std::move(endpoint), std::move(payload), scheduler, @@ -39,11 +40,11 @@ std::unique_ptr FlipperSocketProvider::socketCreate( void FlipperSocketProvider::setDefaultProvider( std::unique_ptr provider) { - provider_ = std::move(provider); + defaultProvider() = std::move(provider); } bool FlipperSocketProvider::hasProvider() { - return provider_ != nullptr; + return defaultProvider() != nullptr; } } // namespace flipper diff --git a/xplat/Flipper/FlipperSocketProvider.h b/xplat/Flipper/FlipperSocketProvider.h index 8e26f38aa..99c6e9bff 100644 --- a/xplat/Flipper/FlipperSocketProvider.h +++ b/xplat/Flipper/FlipperSocketProvider.h @@ -71,8 +71,7 @@ class FlipperSocketProvider { static bool hasProvider(); private: - static std::unique_ptr provider_; - static std::unique_ptr shelvedProvider_; + static std::unique_ptr& defaultProvider(); }; } // namespace flipper