blob: 07fbc2a72074b120774d59e5813a6a383540ad3d [file] [log] [blame] [edit]
// Copyright 2019 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.
#ifndef LIB_INSPECT_SERVICE_CPP_READER_H_
#define LIB_INSPECT_SERVICE_CPP_READER_H_
#include <fuchsia/inspect/cpp/fidl.h>
#include <lib/fpromise/promise.h>
#include <lib/inspect/cpp/hierarchy.h>
namespace inspect {
/// Read all of the child names from a TreeNameIterator into a vector.
///
/// This function continually calls GetNext on the iterator until all child names have been
/// returned.
///
/// Returns a promise for the vector of child names names.
fpromise::promise<std::vector<std::string>> ReadAllChildNames(
fuchsia::inspect::TreeNameIteratorPtr iterator);
/// Read a full inspect::Hierarchy from a fuchsia.inspect.Tree.
///
/// fuchsia.inspect.Tree provides lookup support for Link nodes stored in a hierarchy. This function
/// uses the protocol to lookup linked data as needed to create a complete view of the entire tree,
/// including dynamically generated subtrees.
///
/// Returns a promise for the hierarchy parsed from the Tree.
fpromise::promise<Hierarchy> ReadFromTree(fuchsia::inspect::TreePtr tree);
} // namespace inspect
#endif // LIB_INSPECT_SERVICE_CPP_READER_H_