| // Copyright 2019 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. |
| |
| #include "diagnostics/diag/diag_async_grpc_client_adapter_impl.h" |
| |
| #include <base/logging.h> |
| #include <base/threading/thread_task_runner_handle.h> |
| |
| namespace diagnostics { |
| |
| DiagAsyncGrpcClientAdapterImpl::DiagAsyncGrpcClientAdapterImpl() = default; |
| |
| DiagAsyncGrpcClientAdapterImpl::~DiagAsyncGrpcClientAdapterImpl() = default; |
| |
| bool DiagAsyncGrpcClientAdapterImpl::IsConnected() const { |
| // A connection is defined as having an existing DiagAsyncGrpcClient, |
| // because when an DiagAsyncGrpcClient exists, the adapter is listening |
| // over some gRPC URI. |
| return client_ != nullptr; |
| } |
| |
| void DiagAsyncGrpcClientAdapterImpl::Connect(const std::string& target_uri) { |
| DCHECK(!client_); |
| |
| // Create the DiagAsyncGrpcClient, listening over the specified gRPC URI. |
| client_ = std::make_unique<AsyncGrpcClient<grpc_api::Diagnosticsd>>( |
| base::ThreadTaskRunnerHandle::Get(), target_uri); |
| VLOG(0) << "Created gRPC diagnosticsd client on " << target_uri; |
| } |
| |
| void DiagAsyncGrpcClientAdapterImpl::Shutdown( |
| const base::Closure& on_shutdown) { |
| client_->Shutdown(on_shutdown); |
| } |
| |
| void DiagAsyncGrpcClientAdapterImpl::GetAvailableRoutines( |
| const grpc_api::GetAvailableRoutinesRequest& request, |
| base::Callback<void(std::unique_ptr<grpc_api::GetAvailableRoutinesResponse> |
| response)> callback) { |
| client_->CallRpc(&grpc_api::Diagnosticsd::Stub::AsyncGetAvailableRoutines, |
| request, callback); |
| } |
| |
| } // namespace diagnostics |