Pass SonarState into SonarWebSocketImpl

Summary: Allowing the connection code to update trigger diagnostic events

Reviewed By: passy

Differential Revision: D9117507

fbshipit-source-id: 24eeb1f80109f89137a7333e04039c3ae9dc3e71
This commit is contained in:
John Knox
2018-08-03 07:34:42 -07:00
committed by Facebook Github Bot
parent 3237b60ff1
commit c7858c62f7
5 changed files with 25 additions and 21 deletions

View File

@@ -31,8 +31,9 @@ static SonarClient* kInstance;
using folly::dynamic;
void SonarClient::init(SonarInitConfig config) {
auto state = std::make_shared<SonarState>();
kInstance =
new SonarClient(std::make_unique<SonarWebSocketImpl>(std::move(config)));
new SonarClient(std::make_unique<SonarWebSocketImpl>(std::move(config), state), state);
}
SonarClient* SonarClient::instance() {

View File

@@ -39,9 +39,8 @@ class SonarClient : public SonarWebSocket::Callbacks {
/**
Only public for testing
*/
SonarClient(std::unique_ptr<SonarWebSocket> socket)
: socket_(std::move(socket)) {
sonarState_ = std::make_unique<SonarState>();
SonarClient(std::unique_ptr<SonarWebSocket> socket, std::shared_ptr<SonarState> state)
: socket_(std::move(socket)), sonarState_(state) {
auto step = sonarState_->start("Create client");
socket_->setCallbacks(this);
step->complete();
@@ -92,7 +91,7 @@ class SonarClient : public SonarWebSocket::Callbacks {
std::map<std::string, std::shared_ptr<SonarPlugin>> plugins_;
std::map<std::string, std::shared_ptr<SonarConnectionImpl>> connections_;
std::mutex mutex_;
std::unique_ptr<SonarState> sonarState_;
std::shared_ptr<SonarState> sonarState_;
void performAndReportError(const std::function<void()>& func);
void disconnect(std::shared_ptr<SonarPlugin> plugin);

View File

@@ -91,8 +91,8 @@ class Responder : public rsocket::RSocketResponder {
}
};
SonarWebSocketImpl::SonarWebSocketImpl(SonarInitConfig config)
: deviceData_(config.deviceData), sonarEventBase_(config.callbackWorker), connectionEventBase_(config.connectionWorker) {}
SonarWebSocketImpl::SonarWebSocketImpl(SonarInitConfig config, std::shared_ptr<SonarState> state)
: deviceData_(config.deviceData), sonarState_(state), sonarEventBase_(config.callbackWorker), connectionEventBase_(config.connectionWorker) {}
SonarWebSocketImpl::~SonarWebSocketImpl() {
stop();

View File

@@ -10,6 +10,7 @@
#include <Sonar/SonarInitConfig.h>
#include <Sonar/SonarWebSocket.h>
#include <Sonar/SonarState.h>
#include <folly/Executor.h>
#include <folly/io/async/EventBase.h>
#include <rsocket/RSocket.h>
@@ -26,7 +27,7 @@ class SonarWebSocketImpl : public SonarWebSocket {
friend Responder;
public:
SonarWebSocketImpl(SonarInitConfig config);
SonarWebSocketImpl(SonarInitConfig config, std::shared_ptr<SonarState> state);
~SonarWebSocketImpl();
@@ -46,6 +47,7 @@ class SonarWebSocketImpl : public SonarWebSocket {
bool isOpen_ = false;
Callbacks* callbacks_;
DeviceData deviceData_;
std::shared_ptr<SonarState> sonarState_;
folly::EventBase* sonarEventBase_;
folly::EventBase* connectionEventBase_;