mirror of
https://gitlab.com/fabinfra/fabaccess/sute.git
synced 2025-03-12 14:41:52 +01:00
32 lines
693 B
Rust
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),
|
|
})
|
|
}
|
|
}
|