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(
const dynamic& message,
std::unique_ptr<FlipperResponder> uniqueResponder) {

View File

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

View File

@@ -47,7 +47,7 @@ class FlipperConnectionManager {
True if there's an open connection.
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.

View File

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

View File

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

View File

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

View File

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