blob: 0cd2b54dcbc3cc2ecf4f005ac983098d41fda103 [file] [log] [blame]
// Copyright 2018 The Fuchsia 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 "connect.h"
#include <lib/fdio/util.h>
#include <lib/fxl/files/directory.h>
#include <lib/fxl/files/file.h>
#include <lib/fxl/files/path.h>
#include <lib/fxl/strings/concatenate.h>
#include <lib/fxl/strings/substitute.h>
#include <zircon/device/vfs.h>
namespace iquery {
Connection::Connection(const std::string& directory_path)
: directory_path_(directory_path) {}
bool Connection::Validate() {
return files::IsFile(
files::AbsolutePath(fxl::Concatenate({directory_path_, "/.channel"})));
}
zx_status_t Connection::Connect(
fidl::InterfaceRequest<fuchsia::inspect::Inspect> request) {
return fdio_service_connect(
files::AbsolutePath(fxl::Concatenate({directory_path_, "/.channel"}))
.c_str(),
request.TakeChannel().release());
}
fuchsia::inspect::InspectSyncPtr Connection::SyncOpen() {
fuchsia::inspect::InspectSyncPtr ret;
zx_status_t status = Connect(ret.NewRequest());
if (status != ZX_OK) {
FXL_VLOG(1) << "Failed to connect: " << status;
ret.Unbind();
}
return ret;
}
fuchsia::inspect::InspectPtr Connection::Open() {
fuchsia::inspect::InspectPtr ret;
zx_status_t status = Connect(ret.NewRequest());
if (status != ZX_OK) {
FXL_VLOG(1) << "Failed to connect: " << status;
ret.Unbind();
}
return ret;
}
} // namespace iquery