From 0413bbd458b5d1abdf3104280da2d83e9ba8bd60 Mon Sep 17 00:00:00 2001 From: John Knox Date: Mon, 11 Feb 2019 14:01:32 -0800 Subject: [PATCH] Add sdk_version param when connecting to flipper Summary: Every time an app connects to flipper, it will include its version. With this information, the desktop app will be able to know how to communicate with it (or even whether it still can - and show an error message if not). Reviewed By: passy Differential Revision: D14008785 fbshipit-source-id: ac4dfd52da4bc6a2b90ec09a8e619086b7cd4a59 --- xplat/Flipper/FlipperConnectionManagerImpl.cpp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/xplat/Flipper/FlipperConnectionManagerImpl.cpp b/xplat/Flipper/FlipperConnectionManagerImpl.cpp index 8107c9142..9935b1e54 100644 --- a/xplat/Flipper/FlipperConnectionManagerImpl.cpp +++ b/xplat/Flipper/FlipperConnectionManagerImpl.cpp @@ -31,6 +31,11 @@ static constexpr int connectionKeepaliveSeconds = 10; static constexpr int maxPayloadSize = 0xFFFFFF; +// Not a public-facing version number. +// Used for compatibility checking with desktop flipper. +// To be bumped for every core platform interface change. +static constexpr int sdkVersion = 1; + namespace facebook { namespace flipper { @@ -146,9 +151,9 @@ void FlipperConnectionManagerImpl::doCertificateExchange() { rsocket::SetupParameters parameters; folly::SocketAddress address; - parameters.payload = rsocket::Payload( - folly::toJson(folly::dynamic::object("os", deviceData_.os)( - "device", deviceData_.device)("app", deviceData_.app))); + parameters.payload = rsocket::Payload(folly::toJson(folly::dynamic::object( + "os", deviceData_.os)("device", deviceData_.device)( + "app", deviceData_.app)("sdk_version", sdkVersion))); address.setFromHostPort(deviceData_.host, insecurePort); auto connectingInsecurely = flipperState_->start("Connect insecurely"); @@ -177,9 +182,10 @@ void FlipperConnectionManagerImpl::connectSecurely() { if (deviceId.compare("unknown")) { loadingDeviceId->complete(); } - parameters.payload = rsocket::Payload(folly::toJson(folly::dynamic::object( - "os", deviceData_.os)("device", deviceData_.device)( - "device_id", deviceId)("app", deviceData_.app))); + parameters.payload = rsocket::Payload( + folly::toJson(folly::dynamic::object("os", deviceData_.os)( + "device", deviceData_.device)("device_id", deviceId)( + "app", deviceData_.app)("sdk_version", sdkVersion))); address.setFromHostPort(deviceData_.host, securePort); std::shared_ptr sslContext =