// Copyright 2020 The Chromium OS 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 broker daemon that supports Trichecus from within the Chrome OS guest machine.

use std::env;
use std::io::{copy, stdin, stdout};
use std::thread::spawn;

use libchromeos::vsock::VsockCid;
use sirenia::cli::{initialize_common_arguments, TransportType};
use sirenia::transport::{ClientTransport, IPClientTransport, Transport, VsockClientTransport};

fn main() {
    let args: Vec<String> = env::args().collect();
    let config = initialize_common_arguments(&args[1..]).unwrap();
    let mut transport: Box<dyn ClientTransport> = match config.connection_type {
        TransportType::IpConnection(url) => Box::new(IPClientTransport::new(&url).unwrap()),
        _ => Box::new(VsockClientTransport::new(VsockCid::Hypervisor).unwrap()),
    };

    if let Ok(Transport(mut r, mut w)) = transport.connect() {
        // TODO replace this with RPC invocations.
        spawn(move || {
            copy(&mut stdin(), &mut w).unwrap_or(0);
        });
        copy(&mut r, &mut stdout()).unwrap_or(0);
    }
}
