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
This commit is contained in:
John Knox
2019-02-11 14:01:32 -08:00
committed by Facebook Github Bot
parent 5da8f35ee3
commit 0413bbd458

View File

@@ -31,6 +31,11 @@ static constexpr int connectionKeepaliveSeconds = 10;
static constexpr int maxPayloadSize = 0xFFFFFF; 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 facebook {
namespace flipper { namespace flipper {
@@ -146,9 +151,9 @@ void FlipperConnectionManagerImpl::doCertificateExchange() {
rsocket::SetupParameters parameters; rsocket::SetupParameters parameters;
folly::SocketAddress address; folly::SocketAddress address;
parameters.payload = rsocket::Payload( parameters.payload = rsocket::Payload(folly::toJson(folly::dynamic::object(
folly::toJson(folly::dynamic::object("os", deviceData_.os)( "os", deviceData_.os)("device", deviceData_.device)(
"device", deviceData_.device)("app", deviceData_.app))); "app", deviceData_.app)("sdk_version", sdkVersion)));
address.setFromHostPort(deviceData_.host, insecurePort); address.setFromHostPort(deviceData_.host, insecurePort);
auto connectingInsecurely = flipperState_->start("Connect insecurely"); auto connectingInsecurely = flipperState_->start("Connect insecurely");
@@ -177,9 +182,10 @@ void FlipperConnectionManagerImpl::connectSecurely() {
if (deviceId.compare("unknown")) { if (deviceId.compare("unknown")) {
loadingDeviceId->complete(); loadingDeviceId->complete();
} }
parameters.payload = rsocket::Payload(folly::toJson(folly::dynamic::object( parameters.payload = rsocket::Payload(
"os", deviceData_.os)("device", deviceData_.device)( folly::toJson(folly::dynamic::object("os", deviceData_.os)(
"device_id", deviceId)("app", deviceData_.app))); "device", deviceData_.device)("device_id", deviceId)(
"app", deviceData_.app)("sdk_version", sdkVersion)));
address.setFromHostPort(deviceData_.host, securePort); address.setFromHostPort(deviceData_.host, securePort);
std::shared_ptr<folly::SSLContext> sslContext = std::shared_ptr<folly::SSLContext> sslContext =