53 lines
1.4 KiB
Rust
Raw Normal View History

2020-09-07 17:23:42 +02:00
use smol::net::TcpStream;
use futures_util::FutureExt;
2020-02-14 12:20:17 +01:00
2020-02-18 16:55:19 +01:00
use slog::Logger;
2020-05-04 13:22:14 +02:00
use crate::error::Result;
2020-10-22 13:00:58 +02:00
pub use crate::schema::api_capnp;
2020-02-18 16:55:19 +01:00
use capnp::capability::Promise;
use capnp::Error;
use capnp_rpc::RpcSystem;
use capnp_rpc::twoparty::VatNetwork;
use capnp_rpc::rpc_twoparty_capnp::Side;
2020-10-22 13:00:58 +02:00
use capnp::capability::FromServer;
2020-05-04 13:22:14 +02:00
pub async fn handle_connection(log: Logger, socket: TcpStream) -> Result<()> {
let mut message = capnp::message::Builder::new_default();
2020-09-08 09:56:40 +02:00
let mut outer = message.init_root::<crate::connection::connection_capnp::message::Builder>();
2020-10-22 13:00:58 +02:00
let mut api = outer.init_api();
let mapi = MachinesAPI {};
api.set_machines(capnp_rpc::new_client(mapi));
let network = VatNetwork::new(socket.clone(), socket, Side::Server, Default::default());
2020-10-22 13:00:58 +02:00
let rpc = RpcSystem::new(Box::new(network), None).map(|_| ());
rpc.await;
Ok(())
}
2020-10-22 13:00:58 +02:00
pub struct MachinesAPI;
2020-10-22 13:00:58 +02:00
impl api_capnp::machines::Server for MachinesAPI {
fn list_machines(&mut self,
_params: api_capnp::machines::ListMachinesParams,
mut results: api_capnp::machines::ListMachinesResults)
-> Promise<(), Error>
{
2020-10-22 13:00:58 +02:00
let mut l = results.get();
l.init_machines(0);
Promise::ok(())
}
2020-10-22 13:00:58 +02:00
fn get_machine(&mut self,
_params: api_capnp::machines::GetMachineParams,
mut results: api_capnp::machines::GetMachineResults)
-> Promise<(), Error>
{
Promise::ok(())
}
2020-02-14 12:20:17 +01:00
}