blob: ebd51e69a1ad66a825a1c6278107798c2dbdd5da [file] [log] [blame]
// Copyright 2022 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_BIND_LIBRARY_CHILD_DRIVER_H_
#define SRC_BIND_LIBRARY_CHILD_DRIVER_H_
#include <lib/driver2/driver2.h>
namespace child_driver {
class ChildDriver {
public:
ChildDriver(async_dispatcher_t* dispatcher,
fidl::WireSharedClient<fuchsia_driver_framework::Node> node, driver::Namespace ns,
driver::Logger logger)
: dispatcher_(dispatcher),
node_(std::move(node)),
ns_(std::move(ns)),
logger_(std::move(logger)) {}
virtual ~ChildDriver() = default;
static constexpr const char* Name() { return "child-driver"; }
static zx::status<std::unique_ptr<ChildDriver>> Start(
fuchsia_driver_framework::wire::DriverStartArgs& start_args,
fdf::UnownedDispatcher dispatcher,
fidl::WireSharedClient<fuchsia_driver_framework::Node> node, driver::Namespace ns,
driver::Logger logger);
private:
zx::status<> Run();
async_dispatcher_t* const dispatcher_;
fidl::WireSharedClient<fuchsia_driver_framework::Node> node_;
driver::Namespace ns_;
driver::Logger logger_;
};
} // namespace child_driver
#endif // SRC_BIND_LIBRARY_CHILD_DRIVER_H_