blob: b969daf81499021121ae460e1f889e71980498f5 [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.
//! The network manager allows clients to manage router device properties.
// Used because we use `futures::select!`.
//
// From https://docs.rs/futures/0.3.1/futures/macro.select.html:
// Note that select! relies on proc-macro-hack, and may require to set the compiler's
// recursion limit very high, e.g. #![recursion_limit="1024"].
#![recursion_limit = "256"]
#![deny(missing_docs)]
#![deny(unreachable_patterns)]
#[macro_use]
extern crate log;
mod eventloop;
mod fidl_worker;
mod oir_worker;
mod overnet_worker;
use {
anyhow::Context as _, argh::FromArgs, fuchsia_async as fasync, fuchsia_syslog as fsyslog,
futures::FutureExt as _,
};
#[derive(FromArgs, Debug)]
/// Options for network_manager
pub(crate) struct Opt {
/// device directory path
#[argh(
option,
long = "devicepath",
default = "\"/dev\"\
.to_string()"
)]
dev_path: String,
/// severity level to set logger
#[argh(option, long = "severity")]
severity: Option<i32>,
}
#[fasync::run_singlethreaded]
async fn main() -> Result<(), anyhow::Error> {
let Opt { dev_path: _, severity } = argh::from_env();
let () = fsyslog::init_with_tags(&["network-manager"]).context("initializing logger")?;
let () = fsyslog::set_severity(severity.unwrap_or(fuchsia_syslog::levels::INFO));
let eventloop = eventloop::EventLoop::new().context("creating event loop")?;
info!("starting");
eventloop
.run()
.inspect(|result| {
warn!("exiting: {:?}", result);
})
.await
}