blob: 76b14384632c68828f4e87803ef86cd3c19d6610 [file] [log] [blame]
// Copyright 2023 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 SRC_DEVICES_BIN_DRIVER_MANAGER_DRIVER_DEVELOPMENT_INFO_ITERATOR_H_
#define SRC_DEVICES_BIN_DRIVER_MANAGER_DRIVER_DEVELOPMENT_INFO_ITERATOR_H_
#include <fidl/fuchsia.driver.development/cpp/wire.h>
namespace driver_development {
class DeviceInfoIterator : public fidl::WireServer<fuchsia_driver_development::NodeInfoIterator> {
public:
explicit DeviceInfoIterator(std::unique_ptr<fidl::Arena<512>> arena,
std::vector<fuchsia_driver_development::wire::NodeInfo> list)
: arena_(std::move(arena)), list_(std::move(list)) {}
void GetNext(GetNextCompleter::Sync& completer) override;
private:
size_t offset_ = 0;
std::unique_ptr<fidl::Arena<512>> arena_;
std::vector<fuchsia_driver_development::wire::NodeInfo> list_;
};
class CompositeInfoIterator
: public fidl::WireServer<fuchsia_driver_development::CompositeInfoIterator> {
public:
explicit CompositeInfoIterator(
std::unique_ptr<fidl::Arena<512>> arena,
std::vector<fuchsia_driver_development::wire::CompositeNodeInfo> list)
: arena_(std::move(arena)), list_(std::move(list)) {}
void GetNext(GetNextCompleter::Sync& completer) override;
private:
size_t offset_ = 0;
std::unique_ptr<fidl::Arena<512>> arena_;
std::vector<fuchsia_driver_development::wire::CompositeNodeInfo> list_;
};
} // namespace driver_development
#endif // SRC_DEVICES_BIN_DRIVER_MANAGER_DRIVER_DEVELOPMENT_INFO_ITERATOR_H_