driver_tools/subcommands/restart/
mod.rs

1// Copyright 2022 The Fuchsia Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5pub mod args;
6
7use anyhow::{format_err, Result};
8use args::RestartCommand;
9use fidl_fuchsia_driver_development as fdd;
10use std::io::Write;
11
12pub async fn restart(
13    cmd: RestartCommand,
14    writer: &mut dyn Write,
15    driver_development_proxy: fdd::ManagerProxy,
16) -> Result<()> {
17    writeln!(writer, "Restarting driver hosts containing {}", cmd.driver_path)?;
18    match driver_development_proxy
19        .restart_driver_hosts(&cmd.driver_path.to_string(), fdd::RestartRematchFlags::empty())
20        .await?
21    {
22        Ok(n) => {
23            if n == 0 {
24                writeln!(
25                    writer,
26                    "Did not find any matching driver hosts. Is the driver running and listed by `ffx driver list --loaded`?"
27                )?;
28            } else {
29                writeln!(writer, "Restarted {} driver host{}.", n, if n == 1 { "" } else { "s" })?;
30            }
31            Ok(())
32        }
33        Err(err) => Err(format_err!("{:?}", err)),
34    }
35}