blob: 5a15c35a0224c47cfd3232727bf9bb6adfd88980 [file] [log] [blame]
// 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);
}
}