diff --git a/android/src/main/cpp/sonar.cpp b/android/src/main/cpp/sonar.cpp index 87b1a574c..67083e974 100644 --- a/android/src/main/cpp/sonar.cpp +++ b/android/src/main/cpp/sonar.cpp @@ -19,7 +19,7 @@ #include #include -#include +#include #include #include #include diff --git a/iOS/FlipperKit/FlipperConnection.h b/iOS/FlipperKit/FlipperConnection.h index 2c48c3ad5..5ca1dcd04 100644 --- a/iOS/FlipperKit/FlipperConnection.h +++ b/iOS/FlipperKit/FlipperConnection.h @@ -8,7 +8,7 @@ #import @protocol FlipperResponder; -@protocol SonarWebSocket; +@protocol FlipperConnectionManager; typedef void (^SonarReceiver)(NSDictionary*, id); diff --git a/xplat/Flipper/FlipperClient.cpp b/xplat/Flipper/FlipperClient.cpp index 6176fafb3..7a23de8c8 100644 --- a/xplat/Flipper/FlipperClient.cpp +++ b/xplat/Flipper/FlipperClient.cpp @@ -11,7 +11,7 @@ #include "FlipperResponderImpl.h" #include "SonarState.h" #include "SonarStep.h" -#include "SonarWebSocketImpl.h" +#include "FlipperConnectionManagerImpl.h" #include "ConnectionContextStore.h" #include "Log.h" #include @@ -32,7 +32,7 @@ void FlipperClient::init(FlipperInitConfig config) { auto state = std::make_shared(); auto context = std::make_shared(config.deviceData); kInstance = - new FlipperClient(std::make_unique(std::move(config), state, context), state); + new FlipperClient(std::make_unique(std::move(config), state, context), state); } FlipperClient* FlipperClient::instance() { diff --git a/xplat/Flipper/FlipperClient.h b/xplat/Flipper/FlipperClient.h index f155611f0..1adba46ed 100644 --- a/xplat/Flipper/FlipperClient.h +++ b/xplat/Flipper/FlipperClient.h @@ -12,7 +12,7 @@ #include "FlipperInitConfig.h" #include "FlipperPlugin.h" #include "SonarState.h" -#include "SonarWebSocket.h" +#include "FlipperConnectionManager.h" #include #include #include "SonarStep.h" @@ -21,7 +21,7 @@ namespace facebook { namespace flipper { -class FlipperClient : public SonarWebSocket::Callbacks { +class FlipperClient : public FlipperConnectionManager::Callbacks { public: /** Call before accessing instance with FlipperClient::instance(). This will set up @@ -40,7 +40,7 @@ class FlipperClient : public SonarWebSocket::Callbacks { /** Only public for testing */ - FlipperClient(std::unique_ptr socket, std::shared_ptr state) + FlipperClient(std::unique_ptr socket, std::shared_ptr state) : socket_(std::move(socket)), sonarState_(state) { auto step = sonarState_->start("Create client"); socket_->setCallbacks(this); @@ -90,7 +90,7 @@ class FlipperClient : public SonarWebSocket::Callbacks { private: static FlipperClient* instance_; bool connected_ = false; - std::unique_ptr socket_; + std::unique_ptr socket_; std::map> plugins_; std::map> connections_; std::mutex mutex_; diff --git a/xplat/Flipper/FlipperConnectionImpl.h b/xplat/Flipper/FlipperConnectionImpl.h index 5a2eea495..42e89020d 100644 --- a/xplat/Flipper/FlipperConnectionImpl.h +++ b/xplat/Flipper/FlipperConnectionImpl.h @@ -9,7 +9,7 @@ #pragma once #include "FlipperConnection.h" -#include "SonarWebSocket.h" +#include "FlipperConnectionManager.h" #include #include @@ -18,7 +18,7 @@ namespace flipper { class FlipperConnectionImpl : public FlipperConnection { public: - FlipperConnectionImpl(SonarWebSocket* socket, const std::string& name) + FlipperConnectionImpl(FlipperConnectionManager* socket, const std::string& name) : socket_(socket), name_(name) {} void call( @@ -52,7 +52,7 @@ class FlipperConnectionImpl : public FlipperConnection { } private: - SonarWebSocket* socket_; + FlipperConnectionManager* socket_; std::string name_; std::map receivers_; }; diff --git a/xplat/Flipper/SonarWebSocket.h b/xplat/Flipper/FlipperConnectionManager.h similarity index 90% rename from xplat/Flipper/SonarWebSocket.h rename to xplat/Flipper/FlipperConnectionManager.h index 40481196c..617cb2b0f 100644 --- a/xplat/Flipper/SonarWebSocket.h +++ b/xplat/Flipper/FlipperConnectionManager.h @@ -13,12 +13,12 @@ namespace facebook { namespace flipper { -class SonarWebSocket { +class FlipperConnectionManager { public: class Callbacks; public: - virtual ~SonarWebSocket(){}; + virtual ~FlipperConnectionManager(){}; /** Establishes a connection to the ws server. @@ -48,7 +48,7 @@ class SonarWebSocket { virtual void setCallbacks(Callbacks* callbacks) = 0; }; -class SonarWebSocket::Callbacks { +class FlipperConnectionManager::Callbacks { public: virtual ~Callbacks(){}; diff --git a/xplat/Flipper/SonarWebSocketImpl.cpp b/xplat/Flipper/FlipperConnectionManagerImpl.cpp similarity index 86% rename from xplat/Flipper/SonarWebSocketImpl.cpp rename to xplat/Flipper/FlipperConnectionManagerImpl.cpp index 3eb12e263..23f9a4f8b 100644 --- a/xplat/Flipper/SonarWebSocketImpl.cpp +++ b/xplat/Flipper/FlipperConnectionManagerImpl.cpp @@ -6,7 +6,7 @@ * */ -#include "SonarWebSocketImpl.h" +#include "FlipperConnectionManagerImpl.h" #include "SonarStep.h" #include "ConnectionContextStore.h" #include "Log.h" @@ -34,10 +34,10 @@ namespace flipper { class ConnectionEvents : public rsocket::RSocketConnectionEvents { private: - SonarWebSocketImpl* websocket_; + FlipperConnectionManagerImpl* websocket_; public: - ConnectionEvents(SonarWebSocketImpl* websocket) : websocket_(websocket) {} + ConnectionEvents(FlipperConnectionManagerImpl* websocket) : websocket_(websocket) {} void onConnected() { websocket_->isOpen_ = true; @@ -64,10 +64,10 @@ class ConnectionEvents : public rsocket::RSocketConnectionEvents { class Responder : public rsocket::RSocketResponder { private: - SonarWebSocketImpl* websocket_; + FlipperConnectionManagerImpl* websocket_; public: - Responder(SonarWebSocketImpl* websocket) : websocket_(websocket) {} + Responder(FlipperConnectionManagerImpl* websocket) : websocket_(websocket) {} void handleFireAndForget( rsocket::Payload request, @@ -77,17 +77,17 @@ class Responder : public rsocket::RSocketResponder { } }; -SonarWebSocketImpl::SonarWebSocketImpl(FlipperInitConfig config, std::shared_ptr state, std::shared_ptr contextStore) +FlipperConnectionManagerImpl::FlipperConnectionManagerImpl(FlipperInitConfig config, std::shared_ptr state, std::shared_ptr contextStore) : deviceData_(config.deviceData), sonarState_(state), sonarEventBase_(config.callbackWorker), connectionEventBase_(config.connectionWorker), contextStore_(contextStore) { CHECK_THROW(config.callbackWorker, std::invalid_argument); CHECK_THROW(config.connectionWorker, std::invalid_argument); } -SonarWebSocketImpl::~SonarWebSocketImpl() { +FlipperConnectionManagerImpl::~FlipperConnectionManagerImpl() { stop(); } -void SonarWebSocketImpl::start() { +void FlipperConnectionManagerImpl::start() { auto step = sonarState_->start("Start connection thread"); folly::makeFuture() .via(sonarEventBase_->getEventBase()) @@ -95,7 +95,7 @@ void SonarWebSocketImpl::start() { .thenValue([this, step](auto&&){ step->complete(); startSync(); }); } -void SonarWebSocketImpl::startSync() { +void FlipperConnectionManagerImpl::startSync() { if (!isRunningInOwnThread()) { log(WRONG_THREAD_EXIT_MSG); return; @@ -132,7 +132,7 @@ void SonarWebSocketImpl::startSync() { } } -void SonarWebSocketImpl::doCertificateExchange() { +void FlipperConnectionManagerImpl::doCertificateExchange() { rsocket::SetupParameters parameters; folly::SocketAddress address; @@ -159,7 +159,7 @@ void SonarWebSocketImpl::doCertificateExchange() { requestSignedCertFromSonar(); } -void SonarWebSocketImpl::connectSecurely() { +void FlipperConnectionManagerImpl::connectSecurely() { rsocket::SetupParameters parameters; folly::SocketAddress address; @@ -192,29 +192,29 @@ void SonarWebSocketImpl::connectSecurely() { failedConnectionAttempts_ = 0; } -void SonarWebSocketImpl::reconnect() { +void FlipperConnectionManagerImpl::reconnect() { folly::makeFuture() .via(sonarEventBase_->getEventBase()) .delayed(std::chrono::seconds(reconnectIntervalSeconds)) .thenValue([this](auto&&){ startSync(); }); } -void SonarWebSocketImpl::stop() { +void FlipperConnectionManagerImpl::stop() { if (client_) { client_->disconnect(); } client_ = nullptr; } -bool SonarWebSocketImpl::isOpen() const { +bool FlipperConnectionManagerImpl::isOpen() const { return isOpen_ && connectionIsTrusted_; } -void SonarWebSocketImpl::setCallbacks(Callbacks* callbacks) { +void FlipperConnectionManagerImpl::setCallbacks(Callbacks* callbacks) { callbacks_ = callbacks; } -void SonarWebSocketImpl::sendMessage(const folly::dynamic& message) { +void FlipperConnectionManagerImpl::sendMessage(const folly::dynamic& message) { sonarEventBase_->add([this, message]() { if (client_) { client_->getRequester() @@ -224,7 +224,7 @@ void SonarWebSocketImpl::sendMessage(const folly::dynamic& message) { }); } -bool SonarWebSocketImpl::isCertificateExchangeNeeded() { +bool FlipperConnectionManagerImpl::isCertificateExchangeNeeded() { if (failedConnectionAttempts_ >= 2) { return true; @@ -238,7 +238,7 @@ bool SonarWebSocketImpl::isCertificateExchangeNeeded() { return !hasRequiredFiles; } -void SonarWebSocketImpl::requestSignedCertFromSonar() { +void FlipperConnectionManagerImpl::requestSignedCertFromSonar() { auto generatingCSR = sonarState_->start("Generate CSR"); std::string csr = contextStore_->createCertificateSigningRequest(); generatingCSR->complete(); @@ -283,7 +283,7 @@ void SonarWebSocketImpl::requestSignedCertFromSonar() { failedConnectionAttempts_ = 0; } -void SonarWebSocketImpl::sendLegacyCertificateRequest(folly::dynamic message) { +void FlipperConnectionManagerImpl::sendLegacyCertificateRequest(folly::dynamic message) { // Desktop is using an old version of Flipper. // Fall back to fireAndForget, instead of requestResponse. auto sendingRequest = sonarState_->start("Sending fallback certificate request"); @@ -297,7 +297,7 @@ void SonarWebSocketImpl::sendLegacyCertificateRequest(folly::dynamic message) { }); } -bool SonarWebSocketImpl::isRunningInOwnThread() { +bool FlipperConnectionManagerImpl::isRunningInOwnThread() { return sonarEventBase_->isInEventBaseThread(); } diff --git a/xplat/Flipper/SonarWebSocketImpl.h b/xplat/Flipper/FlipperConnectionManagerImpl.h similarity index 83% rename from xplat/Flipper/SonarWebSocketImpl.h rename to xplat/Flipper/FlipperConnectionManagerImpl.h index ea2fcf282..7e11a40cd 100644 --- a/xplat/Flipper/SonarWebSocketImpl.h +++ b/xplat/Flipper/FlipperConnectionManagerImpl.h @@ -9,7 +9,7 @@ #pragma once #include "FlipperInitConfig.h" -#include "SonarWebSocket.h" +#include "FlipperConnectionManager.h" #include "SonarState.h" #include #include @@ -23,14 +23,14 @@ class ConnectionEvents; class ConnectionContextStore; class Responder; -class SonarWebSocketImpl : public SonarWebSocket { +class FlipperConnectionManagerImpl : public FlipperConnectionManager { friend ConnectionEvents; friend Responder; public: - SonarWebSocketImpl(FlipperInitConfig config, std::shared_ptr state, std::shared_ptr contextStore); + FlipperConnectionManagerImpl(FlipperInitConfig config, std::shared_ptr state, std::shared_ptr contextStore); - ~SonarWebSocketImpl(); + ~FlipperConnectionManagerImpl(); void start() override; diff --git a/xplat/Flipper/FlipperResponderImpl.h b/xplat/Flipper/FlipperResponderImpl.h index 455845fcd..52438402a 100644 --- a/xplat/Flipper/FlipperResponderImpl.h +++ b/xplat/Flipper/FlipperResponderImpl.h @@ -9,7 +9,7 @@ #pragma once #include "FlipperResponder.h" -#include "SonarWebSocket.h" +#include "FlipperConnectionManager.h" #include namespace facebook { @@ -17,7 +17,7 @@ namespace flipper { class FlipperResponderImpl : public FlipperResponder { public: - FlipperResponderImpl(SonarWebSocket* socket, int64_t responseID) + FlipperResponderImpl(FlipperConnectionManager* socket, int64_t responseID) : socket_(socket), responseID_(responseID) {} void success(const folly::dynamic& response) const override { @@ -33,7 +33,7 @@ class FlipperResponderImpl : public FlipperResponder { } private: - SonarWebSocket* socket_; + FlipperConnectionManager* socket_; int64_t responseID_; }; diff --git a/xplat/FlipperTestLib/SonarWebSocketMock.h b/xplat/FlipperTestLib/FlipperConnectionManagerMock.h similarity index 83% rename from xplat/FlipperTestLib/SonarWebSocketMock.h rename to xplat/FlipperTestLib/FlipperConnectionManagerMock.h index b6e31f2ad..9a3aa6b67 100644 --- a/xplat/FlipperTestLib/SonarWebSocketMock.h +++ b/xplat/FlipperTestLib/FlipperConnectionManagerMock.h @@ -8,15 +8,15 @@ #pragma once -#include +#include namespace facebook { namespace flipper { namespace test { -class SonarWebSocketMock : public SonarWebSocket { +class FlipperConnectionManagerMock : public FlipperConnectionManager { public: - SonarWebSocketMock() : callbacks(nullptr) {} + FlipperConnectionManagerMock() : callbacks(nullptr) {} void start() override { open = true; diff --git a/xplat/FlipperTests/SonarClientTests.cpp b/xplat/FlipperTests/SonarClientTests.cpp index 0f52d79da..775b07145 100644 --- a/xplat/FlipperTests/SonarClientTests.cpp +++ b/xplat/FlipperTests/SonarClientTests.cpp @@ -8,7 +8,7 @@ #include #include -#include +#include #include #include @@ -22,7 +22,7 @@ using folly::dynamic; auto state = std::make_shared(); TEST(SonarClientTests, testSaneMocks) { - SonarWebSocketMock socket; + FlipperConnectionManagerMock socket; socket.start(); EXPECT_TRUE(socket.isOpen()); socket.stop(); @@ -33,8 +33,8 @@ TEST(SonarClientTests, testSaneMocks) { } TEST(SonarClientTests, testGetPlugins) { - auto socket = new SonarWebSocketMock; - FlipperClient client(std::unique_ptr{socket}, state); + auto socket = new FlipperConnectionManagerMock; + FlipperClient client(std::unique_ptr{socket}, state); client.start(); client.addPlugin(std::make_shared("Cat")); @@ -49,8 +49,8 @@ TEST(SonarClientTests, testGetPlugins) { } TEST(SonarClientTests, testGetPlugin) { - auto socket = new SonarWebSocketMock; - FlipperClient client(std::unique_ptr{socket}, state); + auto socket = new FlipperConnectionManagerMock; + FlipperClient client(std::unique_ptr{socket}, state); const auto catPlugin = std::make_shared("Cat"); client.addPlugin(catPlugin); @@ -62,8 +62,8 @@ TEST(SonarClientTests, testGetPlugin) { } TEST(SonarClientTests, testGetPluginWithDowncast) { - auto socket = new SonarWebSocketMock; - FlipperClient client(std::unique_ptr{socket}, state); + auto socket = new FlipperConnectionManagerMock; + FlipperClient client(std::unique_ptr{socket}, state); const auto catPlugin = std::make_shared("Cat"); client.addPlugin(catPlugin); @@ -71,8 +71,8 @@ TEST(SonarClientTests, testGetPluginWithDowncast) { } TEST(SonarClientTests, testRemovePlugin) { - auto socket = new SonarWebSocketMock; - FlipperClient client(std::unique_ptr{socket}, state); + auto socket = new FlipperConnectionManagerMock; + FlipperClient client(std::unique_ptr{socket}, state); client.start(); auto plugin = std::make_shared("Test"); @@ -88,8 +88,8 @@ TEST(SonarClientTests, testRemovePlugin) { } TEST(SonarClientTests, testStartStop) { - auto socket = new SonarWebSocketMock; - FlipperClient client(std::unique_ptr{socket}, state); + auto socket = new FlipperConnectionManagerMock; + FlipperClient client(std::unique_ptr{socket}, state); client.start(); EXPECT_TRUE(socket->isOpen()); @@ -99,8 +99,8 @@ TEST(SonarClientTests, testStartStop) { } TEST(SonarClientTests, testConnectDisconnect) { - auto socket = new SonarWebSocketMock; - FlipperClient client(std::unique_ptr{socket}, state); + auto socket = new FlipperConnectionManagerMock; + FlipperClient client(std::unique_ptr{socket}, state); bool pluginConnected = false; const auto connectionCallback = [&](std::shared_ptr conn) { @@ -122,8 +122,8 @@ TEST(SonarClientTests, testConnectDisconnect) { } TEST(SonarClientTests, testInitDeinit) { - auto socket = new SonarWebSocketMock; - FlipperClient client(std::unique_ptr{socket}, state); + auto socket = new FlipperConnectionManagerMock; + FlipperClient client(std::unique_ptr{socket}, state); bool pluginConnected = false; const auto connectionCallback = [&](std::shared_ptr conn) { @@ -160,8 +160,8 @@ TEST(SonarClientTests, testInitDeinit) { } TEST(SonarClientTests, testRemovePluginWhenConnected) { - auto socket = new SonarWebSocketMock; - FlipperClient client(std::unique_ptr{socket}, state); + auto socket = new FlipperConnectionManagerMock; + FlipperClient client(std::unique_ptr{socket}, state); bool pluginConnected = false; const auto connectionCallback = [&](std::shared_ptr conn) { @@ -181,8 +181,8 @@ TEST(SonarClientTests, testRemovePluginWhenConnected) { } TEST(SonarClientTests, testUnhandleableMethod) { - auto socket = new SonarWebSocketMock; - FlipperClient client(std::unique_ptr{socket}, state); + auto socket = new FlipperConnectionManagerMock; + FlipperClient client(std::unique_ptr{socket}, state); auto plugin = std::make_shared("Test"); client.addPlugin(plugin); @@ -201,8 +201,8 @@ TEST(SonarClientTests, testUnhandleableMethod) { } TEST(SonarClientTests, testExecute) { - auto socket = new SonarWebSocketMock; - FlipperClient client(std::unique_ptr{socket}, state); + auto socket = new FlipperConnectionManagerMock; + FlipperClient client(std::unique_ptr{socket}, state); client.start(); const auto connectionCallback = [](std::shared_ptr conn) { @@ -231,8 +231,8 @@ TEST(SonarClientTests, testExecute) { } TEST(SonarClientTests, testExecuteWithParams) { - auto socket = new SonarWebSocketMock; - FlipperClient client(std::unique_ptr{socket}, state); + auto socket = new FlipperConnectionManagerMock; + FlipperClient client(std::unique_ptr{socket}, state); const auto connectionCallback = [&](std::shared_ptr conn) { const auto receiver = [](const dynamic ¶ms, @@ -264,8 +264,8 @@ TEST(SonarClientTests, testExecuteWithParams) { } TEST(SonarClientTests, testExceptionUnknownPlugin) { - auto socket = new SonarWebSocketMock; - FlipperClient client(std::unique_ptr{socket}, state); + auto socket = new FlipperConnectionManagerMock; + FlipperClient client(std::unique_ptr{socket}, state); client.start(); dynamic messageInit = dynamic::object("method", "init")( @@ -277,8 +277,8 @@ TEST(SonarClientTests, testExceptionUnknownPlugin) { } TEST(SonarClientTests, testExceptionUnknownApi) { - auto socket = new SonarWebSocketMock; - FlipperClient client(std::unique_ptr{socket}, state); + auto socket = new FlipperConnectionManagerMock; + FlipperClient client(std::unique_ptr{socket}, state); client.start(); dynamic messageInit = dynamic::object("method", "execute")( diff --git a/xplat/FlipperTests/SonarWebSocketImplTerminationTests.cpp b/xplat/FlipperTests/SonarWebSocketImplTerminationTests.cpp index 529255d99..0fd312d3e 100644 --- a/xplat/FlipperTests/SonarWebSocketImplTerminationTests.cpp +++ b/xplat/FlipperTests/SonarWebSocketImplTerminationTests.cpp @@ -6,7 +6,7 @@ * */ -#include +#include #include #include @@ -17,7 +17,7 @@ namespace test { using folly::EventBase; -class SonarWebSocketImplTerminationTest : public ::testing::Test { +class FlipperConnectionManagerImplTerminationTest : public ::testing::Test { protected: std::shared_ptr state; std::shared_ptr contextStore; @@ -30,9 +30,9 @@ protected: } }; -TEST_F(SonarWebSocketImplTerminationTest, testNullEventBaseGetsRejected) { +TEST_F(FlipperConnectionManagerImplTerminationTest, testNullEventBaseGetsRejected) { try { - auto instance = std::make_shared(FlipperInitConfig { + auto instance = std::make_shared(FlipperInitConfig { DeviceData {}, nullptr, new EventBase() @@ -45,7 +45,7 @@ TEST_F(SonarWebSocketImplTerminationTest, testNullEventBaseGetsRejected) { // Pass test } try { - auto instance = std::make_shared(FlipperInitConfig { + auto instance = std::make_shared(FlipperInitConfig { DeviceData {}, new EventBase(), nullptr @@ -59,17 +59,17 @@ TEST_F(SonarWebSocketImplTerminationTest, testNullEventBaseGetsRejected) { } } -TEST_F(SonarWebSocketImplTerminationTest, testNonStartedEventBaseDoesntHang) { +TEST_F(FlipperConnectionManagerImplTerminationTest, testNonStartedEventBaseDoesntHang) { auto config = FlipperInitConfig { DeviceData {}, new EventBase(), new EventBase() }; - auto instance = std::make_shared(config, state, contextStore); + auto instance = std::make_shared(config, state, contextStore); instance->start(); } -TEST_F(SonarWebSocketImplTerminationTest, testStartedEventBaseDoesntHang) { +TEST_F(FlipperConnectionManagerImplTerminationTest, testStartedEventBaseDoesntHang) { auto sonarEventBase = new EventBase(); auto connectionEventBase = new EventBase(); auto sonarThread = std::thread([sonarEventBase](){ @@ -83,7 +83,7 @@ TEST_F(SonarWebSocketImplTerminationTest, testStartedEventBaseDoesntHang) { sonarEventBase, connectionEventBase }; - auto instance = std::make_shared(config, state, contextStore); + auto instance = std::make_shared(config, state, contextStore); instance->start();