mirror of
https://gitlab.com/fabinfra/fabaccess/bffh.git
synced 2024-11-23 23:27:57 +01:00
49 lines
1.4 KiB
Rust
49 lines
1.4 KiB
Rust
|
use crate::capnp::resource::Machine;
|
||
|
use crate::resources::search::ResourcesHandle;
|
||
|
use crate::resources::Resource;
|
||
|
use crate::session::SessionHandle;
|
||
|
use crate::RESOURCES;
|
||
|
use api::resources_capnp::resources::{GetByNameParams, GetByNameResults, Server as ResourcesServer};
|
||
|
use capnp::capability::Promise;
|
||
|
use capnp::Error;
|
||
|
use capnp_rpc::pry;
|
||
|
use tracing::Span;
|
||
|
|
||
|
const TARGET: &str = "bffh::api::machinesystem";
|
||
|
|
||
|
#[derive(Clone)]
|
||
|
pub struct Machines {
|
||
|
span: Span,
|
||
|
session: SessionHandle,
|
||
|
resources: ResourcesHandle,
|
||
|
}
|
||
|
|
||
|
impl Machines {
|
||
|
pub fn new(session: SessionHandle) -> Self {
|
||
|
let span = tracing::info_span!(
|
||
|
target: TARGET,
|
||
|
parent: &session.span,
|
||
|
"MachineSystem",
|
||
|
);
|
||
|
// FIXME no unwrap bad
|
||
|
Self {
|
||
|
span,
|
||
|
session,
|
||
|
resources: RESOURCES.get().unwrap().clone(),
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
impl ResourcesServer for Machines {
|
||
|
fn get_by_name(&mut self, params: GetByNameParams, mut results: GetByNameResults) -> Promise<(), Error> {
|
||
|
let params = pry!(pry!(params.get()).get_name());
|
||
|
|
||
|
if let Some(r) = self.resources.get_by_id(params) {
|
||
|
let mut builder = results.get().init_ok();
|
||
|
let machine = Machine::new(self.session.clone(), r.clone());
|
||
|
machine.fill_resource(&mut builder);
|
||
|
}
|
||
|
|
||
|
Promise::ok(())
|
||
|
}
|
||
|
}
|