clean up veilid state processing

This commit is contained in:
John Smith
2022-01-18 18:28:22 -05:00
parent 1b6864bf22
commit 205a6a8fd1
5 changed files with 54 additions and 41 deletions

View File

@@ -121,6 +121,7 @@ impl veilid_server::Server for VeilidServerImpl {
mut results: veilid_server::RegisterResults,
) -> Promise<(), ::capnp::Error> {
trace!("VeilidServerImpl::register");
self.registration_map.borrow_mut().registrations.insert(
self.next_id,
RegistrationHandle {
@@ -129,16 +130,26 @@ impl veilid_server::Server for VeilidServerImpl {
},
);
results
.get()
.set_registration(capnp_rpc::new_client(RegistrationImpl::new(
self.next_id,
self.registration_map.clone(),
)));
let veilid_api = self.veilid_api.clone();
let registration = capnp_rpc::new_client(RegistrationImpl::new(
self.next_id,
self.registration_map.clone(),
));
self.next_id += 1;
Promise::ok(())
Promise::from_future(async move {
let state = veilid_api
.get_state()
.await
.map_err(|e| ::capnp::Error::failed(format!("{:?}", e)))?;
let mut res = results.get();
res.set_registration(registration);
let rpc_state = res.init_state();
convert_state(&state, rpc_state);
Ok(())
})
}
fn debug(