Files
flipper/xplat/Flipper/SonarWebSocketImpl.h
John Knox 574c05c41d Rename SonarInitConfig
Summary: Part of sonar -> flipper rename

Reviewed By: priteshrnandgaonkar

Differential Revision: D9908472

fbshipit-source-id: f2e694b5abfa22a745ee4719d24d6aad8af6ee2a
2018-09-20 17:06:55 -07:00

72 lines
1.7 KiB
C++

/*
* Copyright (c) 2018-present, Facebook, Inc.
*
* This source code is licensed under the MIT license found in the LICENSE
* file in the root directory of this source tree.
*
*/
#pragma once
#include "FlipperInitConfig.h"
#include "SonarWebSocket.h"
#include "SonarState.h"
#include <folly/Executor.h>
#include <folly/io/async/EventBase.h>
#include <rsocket/RSocket.h>
#include <mutex>
namespace facebook {
namespace flipper {
class ConnectionEvents;
class ConnectionContextStore;
class Responder;
class SonarWebSocketImpl : public SonarWebSocket {
friend ConnectionEvents;
friend Responder;
public:
SonarWebSocketImpl(FlipperInitConfig config, std::shared_ptr<SonarState> state, std::shared_ptr<ConnectionContextStore> contextStore);
~SonarWebSocketImpl();
void start() override;
void stop() override;
bool isOpen() const override;
void setCallbacks(Callbacks* callbacks) override;
void sendMessage(const folly::dynamic& message) override;
void reconnect();
private:
bool isOpen_ = false;
Callbacks* callbacks_;
DeviceData deviceData_;
std::shared_ptr<SonarState> sonarState_;
folly::EventBase* sonarEventBase_;
folly::EventBase* connectionEventBase_;
std::unique_ptr<rsocket::RSocketClient> client_;
bool connectionIsTrusted_;
int failedConnectionAttempts_ = 0;
std::shared_ptr<ConnectionContextStore> contextStore_;
void startSync();
void doCertificateExchange();
void connectSecurely();
bool isCertificateExchangeNeeded();
void requestSignedCertFromSonar();
bool isRunningInOwnThread();
void sendLegacyCertificateRequest(folly::dynamic message);
std::string getDeviceId();
};
} // namespace flipper
} // namespace facebook