From 43793172581ee17e8f2f0a81ddcff5183192ff3a Mon Sep 17 00:00:00 2001 From: Lorenzo Blasa Date: Tue, 20 Jun 2023 07:55:25 -0700 Subject: [PATCH] Move socket event handler inside FlipperConnectionManagerImpl Summary: The event handler is a friend type that was mutating the connection manager state. Instead, just forward the event handling to it. Then state mutation is consolidated inside the connection manager. Reviewed By: passy Differential Revision: D46849769 fbshipit-source-id: 594ab32c8e891564afa94e1be6b93b1dfeffe26f --- .../Flipper/FlipperConnectionManagerImpl.cpp | 54 ++++++++++--------- xplat/Flipper/FlipperConnectionManagerImpl.h | 1 + 2 files changed, 30 insertions(+), 25 deletions(-) diff --git a/xplat/Flipper/FlipperConnectionManagerImpl.cpp b/xplat/Flipper/FlipperConnectionManagerImpl.cpp index 3c6aa3e8b..c7c08d74b 100644 --- a/xplat/Flipper/FlipperConnectionManagerImpl.cpp +++ b/xplat/Flipper/FlipperConnectionManagerImpl.cpp @@ -53,30 +53,7 @@ class ConnectionEvents { if (impl == nullptr) { return; } - switch (event) { - case SocketEvent::OPEN: - impl->isConnected_ = true; - if (impl->connectionIsTrusted_) { - impl->callbacks_->onConnected(); - } - break; - case SocketEvent::SSL_ERROR: - // SSL errors are not handled as a connection event - // on this handler. - break; - case SocketEvent::CLOSE: - case SocketEvent::ERROR: - if (!impl->isConnected_) { - return; - } - impl->isConnected_ = false; - if (impl->connectionIsTrusted_) { - impl->connectionIsTrusted_ = false; - impl->callbacks_->onDisconnected(); - } - impl->reconnect(); - break; - } + impl->handleSocketEvent(event); } } @@ -114,7 +91,34 @@ void FlipperConnectionManagerImpl::setCertificateProvider( std::shared_ptr FlipperConnectionManagerImpl::getCertificateProvider() { return certProvider_; -}; +} + +void FlipperConnectionManagerImpl::handleSocketEvent(SocketEvent event) { + switch (event) { + case SocketEvent::OPEN: + isConnected_ = true; + if (connectionIsTrusted_) { + callbacks_->onConnected(); + } + break; + case SocketEvent::SSL_ERROR: + // SSL errors are not handled as a connection event + // on this handler. + break; + case SocketEvent::CLOSE: + case SocketEvent::ERROR: + if (!isConnected_) { + return; + } + isConnected_ = false; + if (connectionIsTrusted_) { + connectionIsTrusted_ = false; + callbacks_->onDisconnected(); + } + reconnect(); + break; + } +} void FlipperConnectionManagerImpl::start() { if (!FlipperSocketProvider::hasProvider()) { diff --git a/xplat/Flipper/FlipperConnectionManagerImpl.h b/xplat/Flipper/FlipperConnectionManagerImpl.h index 13aabc375..5e79a3014 100644 --- a/xplat/Flipper/FlipperConnectionManagerImpl.h +++ b/xplat/Flipper/FlipperConnectionManagerImpl.h @@ -82,6 +82,7 @@ class FlipperConnectionManagerImpl : public FlipperConnectionManager { void startSync(); bool connectAndExchangeCertificate(); bool connectSecurely(); + void handleSocketEvent(const SocketEvent event); bool isCertificateExchangeNeeded(); void requestSignedCertificate(); void processSignedCertificateResponse(