Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,12 @@
//! simple_device

use std::path::PathBuf;
use std::str::FromStr;
use std::sync::{Arc, RwLock};
use std::thread::{JoinHandle, spawn};

use clap::Parser;
use log::error;
use log::{LevelFilter, error};
use thiserror::Error;
use vhost_user_backend::VhostUserDaemon;
use vhu_media::VhuMediaBackend;
Expand All @@ -29,6 +30,8 @@ use vm_memory::{GuestMemoryAtomic, GuestMemoryMmap};

#[derive(Debug, Error)]
pub(crate) enum Error {
#[error("Failed to parse verbosity level: {0}")]
ParseLevelError(log::ParseLevelError),
#[error("Could not create daemon: {0}")]
CouldNotCreateDaemon(vhost_user_backend::Error),
#[error("Fatal error: {0}")]
Expand All @@ -43,6 +46,9 @@ struct CmdLineArgs {
/// Location of vhost-user Unix domain socket.
#[clap(short, long, value_name = "SOCKET")]
socket_path: PathBuf,
/// Log verbosity, one of Off, Error, Warning, Info, Debug, Trace.
#[clap(short, long, default_value_t = String::from("Debug") )]
verbosity: String,
}

#[derive(PartialEq, Debug)]
Expand All @@ -60,10 +66,17 @@ impl TryFrom<CmdLineArgs> for Config {
}
}

fn init_logging(verbosity: &str) -> Result<()> {
env_logger::builder()
.format_timestamp_secs()
.filter_level(LevelFilter::from_str(verbosity).map_err(Error::ParseLevelError)?)
.init();
Ok(())
}

const VFL_TYPE_VIDEO: u32 = 0;

fn start_backend(args: CmdLineArgs) -> Result<()> {
let config = Config::try_from(args)?;
fn start_backend(config: Config) -> Result<()> {
let socket_path = config.socket_path.clone();
let handle: JoinHandle<Result<()>> = spawn(move || {
loop {
Expand Down Expand Up @@ -96,7 +109,9 @@ fn start_backend(args: CmdLineArgs) -> Result<()> {
}

fn main() -> Result<()> {
env_logger::init();
let args = CmdLineArgs::parse();

init_logging(&args.verbosity)?;

start_backend(CmdLineArgs::parse())
start_backend(Config::try_from(args)?)
}
Loading