New 'isConnected' API

Summary:
Expose a new API to be used to check if there's an open connection with Flipper Desktop.

Changelog: new FlipperClient isConnected API

Reviewed By: antonk52

Differential Revision: D46841095

fbshipit-source-id: 82a60f52496fb218cb50c6a28d7ffe7225ae23aa
This commit is contained in:
Lorenzo Blasa
2023-06-20 00:46:55 -07:00
committed by Facebook GitHub Bot
parent daa3a38ed3
commit 7cec520729
7 changed files with 28 additions and 18 deletions

View File

@@ -160,6 +160,13 @@ void FlipperClient::onDisconnected() {
}); });
} }
bool FlipperClient::isConnected() {
if (socket_ != nullptr) {
return socket_->isConnected();
}
return false;
}
void FlipperClient::onMessageReceived( void FlipperClient::onMessageReceived(
const dynamic& message, const dynamic& message,
std::unique_ptr<FlipperResponder> uniqueResponder) { std::unique_ptr<FlipperResponder> uniqueResponder) {

View File

@@ -74,6 +74,8 @@ class FlipperClient : public FlipperConnectionManager::Callbacks {
void onDisconnected() override; void onDisconnected() override;
bool isConnected();
void onMessageReceived( void onMessageReceived(
const folly::dynamic& message, const folly::dynamic& message,
std::unique_ptr<FlipperResponder>) override; std::unique_ptr<FlipperResponder>) override;

View File

@@ -47,7 +47,7 @@ class FlipperConnectionManager {
True if there's an open connection. True if there's an open connection.
This method may block if the connection is busy. This method may block if the connection is busy.
*/ */
virtual bool isOpen() const = 0; virtual bool isConnected() const = 0;
/** /**
Send message to the ws server. Send message to the ws server.

View File

@@ -55,7 +55,7 @@ class ConnectionEvents {
} }
switch (event) { switch (event) {
case SocketEvent::OPEN: case SocketEvent::OPEN:
impl->isOpen_ = true; impl->isConnected_ = true;
if (impl->connectionIsTrusted_) { if (impl->connectionIsTrusted_) {
impl->callbacks_->onConnected(); impl->callbacks_->onConnected();
} }
@@ -66,9 +66,10 @@ class ConnectionEvents {
break; break;
case SocketEvent::CLOSE: case SocketEvent::CLOSE:
case SocketEvent::ERROR: case SocketEvent::ERROR:
if (!impl->isOpen_) if (!impl->isConnected_) {
return; return;
impl->isOpen_ = false; }
impl->isConnected_ = false;
if (impl->connectionIsTrusted_) { if (impl->connectionIsTrusted_) {
impl->connectionIsTrusted_ = false; impl->connectionIsTrusted_ = false;
impl->callbacks_->onDisconnected(); impl->callbacks_->onDisconnected();
@@ -144,7 +145,7 @@ void FlipperConnectionManagerImpl::startSync() {
log(WRONG_THREAD_EXIT_MSG); log(WRONG_THREAD_EXIT_MSG);
return; return;
} }
if (isOpen()) { if (isConnected()) {
log("Already connected"); log("Already connected");
return; return;
} }
@@ -317,8 +318,8 @@ void FlipperConnectionManagerImpl::stop() {
join.wait(); join.wait();
} }
bool FlipperConnectionManagerImpl::isOpen() const { bool FlipperConnectionManagerImpl::isConnected() const {
return isOpen_ && connectionIsTrusted_; return isConnected_ && connectionIsTrusted_;
} }
void FlipperConnectionManagerImpl::setCallbacks(Callbacks* callbacks) { void FlipperConnectionManagerImpl::setCallbacks(Callbacks* callbacks) {

View File

@@ -36,7 +36,7 @@ class FlipperConnectionManagerImpl : public FlipperConnectionManager {
void stop() override; void stop() override;
bool isOpen() const override; bool isConnected() const override;
void setCallbacks(Callbacks* callbacks) override; void setCallbacks(Callbacks* callbacks) override;
@@ -54,7 +54,7 @@ class FlipperConnectionManagerImpl : public FlipperConnectionManager {
std::shared_ptr<FlipperCertificateProvider> getCertificateProvider() override; std::shared_ptr<FlipperCertificateProvider> getCertificateProvider() override;
private: private:
bool isOpen_ = false; bool isConnected_ = false;
bool isStarted_ = false; bool isStarted_ = false;
std::shared_ptr<FlipperCertificateProvider> certProvider_ = nullptr; std::shared_ptr<FlipperCertificateProvider> certProvider_ = nullptr;
Callbacks* callbacks_; Callbacks* callbacks_;

View File

@@ -19,21 +19,21 @@ class FlipperConnectionManagerMock : public FlipperConnectionManager {
FlipperConnectionManagerMock() : callbacks(nullptr) {} FlipperConnectionManagerMock() : callbacks(nullptr) {}
void start() override { void start() override {
open = true; connected = true;
if (callbacks) { if (callbacks) {
callbacks->onConnected(); callbacks->onConnected();
} }
} }
void stop() override { void stop() override {
open = false; connected = false;
if (callbacks) { if (callbacks) {
callbacks->onDisconnected(); callbacks->onDisconnected();
} }
} }
bool isOpen() const override { bool isConnected() const override {
return open; return connected;
} }
void sendMessage(const folly::dynamic& message) override { void sendMessage(const folly::dynamic& message) override {
@@ -77,7 +77,7 @@ class FlipperConnectionManagerMock : public FlipperConnectionManager {
} }
public: public:
bool open = false; bool connected = false;
Callbacks* callbacks; Callbacks* callbacks;
std::vector<folly::dynamic> messages; std::vector<folly::dynamic> messages;
std::vector<folly::dynamic> messagesReceived; std::vector<folly::dynamic> messagesReceived;

View File

@@ -47,9 +47,9 @@ class FlipperClientTest : public ::testing::Test {
TEST_F(FlipperClientTest, testSaneMocks) { TEST_F(FlipperClientTest, testSaneMocks) {
FlipperConnectionManagerMock socket; FlipperConnectionManagerMock socket;
socket.start(); socket.start();
EXPECT_TRUE(socket.isOpen()); EXPECT_TRUE(socket.isConnected());
socket.stop(); socket.stop();
EXPECT_FALSE(socket.isOpen()); EXPECT_FALSE(socket.isConnected());
FlipperPluginMock plugin("Test"); FlipperPluginMock plugin("Test");
EXPECT_EQ(plugin.identifier(), "Test"); EXPECT_EQ(plugin.identifier(), "Test");
@@ -103,10 +103,10 @@ TEST_F(FlipperClientTest, testRemovePlugin) {
TEST_F(FlipperClientTest, testStartStop) { TEST_F(FlipperClientTest, testStartStop) {
client->start(); client->start();
EXPECT_TRUE(socket->isOpen()); EXPECT_TRUE(socket->isConnected());
client->stop(); client->stop();
EXPECT_FALSE(socket->isOpen()); EXPECT_FALSE(socket->isConnected());
} }
TEST_F(FlipperClientTest, testConnectDisconnect) { TEST_F(FlipperClientTest, testConnectDisconnect) {