|  | // 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_ |