blob: 296350eb525181384dff26c6717c47ab80ead6b4 [file] [log] [blame]
// Copyright 2020 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef DIAGNOSTICS_WILCO_DTC_SUPPORTD_MOJO_GRPC_ADAPTER_H_
#define DIAGNOSTICS_WILCO_DTC_SUPPORTD_MOJO_GRPC_ADAPTER_H_
#include <string>
#include <base/callback.h>
#include <base/strings/string_piece_forward.h>
namespace diagnostics {
class GrpcClientManager;
// Forwards calls from Mojo service to wilco gRPC clients.
class MojoGrpcAdapter final {
public:
using SendGrpcUiMessageToWilcoDtcCallback =
base::Callback<void(std::string response_json_message)>;
explicit MojoGrpcAdapter(GrpcClientManager* grpc_client_manager);
MojoGrpcAdapter(const MojoGrpcAdapter&) = delete;
MojoGrpcAdapter& operator=(const MojoGrpcAdapter&) = delete;
~MojoGrpcAdapter();
// Called when wilco_dtc_supportd daemon mojo function
// |SendUiMessageToWilcoDtc| was called.
//
// Calls gRPC HandleMessageFromUiRequest method on wilco_dtc and puts
// |json_message| to the gRPC |HandleMessageFromUiRequest| request message.
// Result of the call is returned via |callback|; if the request succeeded,
// it will receive the message returned by the wilco_dtc.
void SendGrpcUiMessageToWilcoDtc(
base::StringPiece json_message,
const SendGrpcUiMessageToWilcoDtcCallback& callback);
// Called when wilco_dtc_supportd daemon mojo function
// |NotifyConfigurationDataChanged| was called.
//
// Calls gRPC HandleConfigurationDataChanged method on wilco_dtc to notify
// that new JSON configuration data is available and can be retrieved by
// calling |GetConfigurationData|.
void NotifyConfigurationDataChangedToWilcoDtc();
private:
// Unowned. The grpc clients must outlive this instance.
const GrpcClientManager* const grpc_client_manager_;
};
} // namespace diagnostics
#endif // DIAGNOSTICS_WILCO_DTC_SUPPORTD_MOJO_GRPC_ADAPTER_H_