prodable machines

This commit is contained in:
Nadja Reitzenstein
2023-02-14 16:58:23 +01:00
parent 198845f176
commit d196050fe0
4 changed files with 38 additions and 4 deletions

View File

@ -6,10 +6,12 @@ use api::general_capnp::optional;
use api::machine_capnp::machine::{
self, admin, admin::Server as AdminServer, check, check::Server as CheckServer,
in_use as inuse, in_use::Server as InUseServer, info, info::Server as InfoServer, manage,
manage::Server as ManageServer, use_, use_::Server as UseServer, MachineState,
manage::Server as ManageServer, use_, use_::Server as UseServer, MachineState, prodable::Server as ProdableServer,
};
use capnp::capability::Promise;
use capnp::Error;
use capnp_rpc::pry;
use api::machine_capnp::machine::prodable::{ProdWithDataParams, ProdWithDataResults};
#[derive(Clone)]
pub struct Machine {
@ -67,6 +69,9 @@ impl Machine {
ArchivedStatus::InUse(owner) => {
if owner == &user {
builder.set_inuse(capnp_rpc::new_client(self.clone()));
if self.resource.get_description().prodable {
builder.set_prodable(capnp_rpc::new_client(self.clone()));
}
}
MachineState::InUse
}
@ -182,6 +187,14 @@ impl InUseServer for Machine {
}
}
impl ProdableServer for Machine {
fn prod_with_data(&mut self, mut params: ProdWithDataParams, _: ProdWithDataResults) -> Promise<(), Error> {
let data: Vec<u8> = pry!(pry!(params.get()).get_data()).to_vec();
self.resource.send_raw(data);
Promise::ok(())
}
}
impl CheckServer for Machine {
fn check(
&mut self,