sute/src/session.rs
Gregor Reitzenstein 85a53cf9f2 Adds session code
2020-11-19 09:42:19 +01:00

32 lines
693 B
Rust

use anyhow::Result;
use capnp_rpc::RpcSystem;
use capnp_rpc::rpc_twoparty_capnp::Side;
use smol::net::TcpStream;
use smol::net::AsyncToSocketAddrs;
use slog::Logger;
use crate::schema::{bootstrap, API, Authentication};
pub struct Session {
bootstrap: API,
authenticate: Option<Authentication>,
vat: Option<RpcSystem<Side>>,
}
impl Session {
async fn connect<A: AsyncToSocketAddrs>(log: Logger, addr: A) -> Result<Session> {
let stream = TcpStream::connect(addr).await?;
let (rpc_system, api) = bootstrap(log, stream);
Ok(Session {
bootstrap: api,
authenticate: None,
vat: Some(rpc_system),
})
}
}