blob: 9b19283294d4a3bda6dccaee4c45c9a5937a1d49 [file] [log] [blame]
// 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 SRC_LIB_ISOLATED_DEVMGR_ISOLATED_DEVMGR_H_
#define SRC_LIB_ISOLATED_DEVMGR_ISOLATED_DEVMGR_H_
#include <lib/async/cpp/wait.h>
#include <lib/devmgr-integration-test/fixture.h>
#include <lib/zx/channel.h>
#include <memory>
#include <ddk/metadata/test.h>
namespace isolated_devmgr {
class IsolatedDevmgr {
public:
IsolatedDevmgr(devmgr_integration_test::IsolatedDevmgr devmgr) : devmgr_(std::move(devmgr)) {}
~IsolatedDevmgr() = default;
int root() { return devmgr_.devfs_root().get(); }
const fbl::unique_fd& devfs_root() { return devmgr_.devfs_root(); }
void Connect(zx::channel req);
zx_status_t WaitForFile(const char* path);
void SetExceptionCallback(fit::closure cb) { devmgr_.SetExceptionCallback(std::move(cb)); }
struct ExtraArgs {
// A list of vid/pid/did triplets to spawn in their own devhosts.
fbl::Vector<board_test::DeviceEntry> device_list;
};
static std::unique_ptr<IsolatedDevmgr> Create(
devmgr_launcher::Args args,
std::unique_ptr<fbl::Vector<board_test::DeviceEntry>> device_list_unique_ptr = nullptr,
async_dispatcher_t* dispatcher = nullptr);
private:
devmgr_integration_test::IsolatedDevmgr devmgr_;
};
} // namespace isolated_devmgr
#endif // SRC_LIB_ISOLATED_DEVMGR_ISOLATED_DEVMGR_H_