Skip to content

Commit

Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
CapMessage::CanMessage added
Browse files Browse the repository at this point in the history
Drew Tada authored and Drew Tada committed Dec 22, 2023
1 parent 800a83b commit 087252b
Showing 3 changed files with 24 additions and 9 deletions.
18 changes: 15 additions & 3 deletions src/kernel/mod.rs
Original file line number Diff line number Diff line change
@@ -1032,6 +1032,21 @@ pub async fn kernel(
let _ = persist_state(&our.name, &send_to_loop, &process_map).await;
let _ = responder.send(true);
},
t::CapMessage::CanMessage { from, to, responder } => {
let Some(entry) = process_map.get_mut(&from) else {
let _ = responder.send(false);
continue;
};
let _ = responder.send(
match entry.messaging_capabilities.get(&t::Capability {
issuer: to.clone(),
params: "\"messaging\"".into(),
}) {
None => false,
Some(_) => true,
}
);
}
t::CapMessage::_Drop { on, cap, responder } => {
// remove cap from process map
let Some(entry) = process_map.get_mut(&on) else {
@@ -1043,9 +1058,6 @@ pub async fn kernel(
let _ = responder.send(true);
},
t::CapMessage::Has { on, cap, responder } => {
// TODO need to check in capabilities, networking, and messaging
//
//
// return boolean on responder
let _ = responder.send(
match process_map.get(&on) {
9 changes: 3 additions & 6 deletions src/kernel/process.rs
Original file line number Diff line number Diff line change
@@ -574,12 +574,9 @@ pub async fn make_process_loop(
request.expects_response = None;
let (tx, rx) = tokio::sync::oneshot::channel();
let _ = caps_oracle
.send(t::CapMessage::Has {
on: metadata.our.process.clone(),
cap: t::Capability {
issuer: address.clone(),
params: "\"messaging\"".into(),
},
.send(t::CapMessage::CanMessage {
from: metadata.our.process.clone(),
to: address.clone(),
responder: tx,
})
.await;
6 changes: 6 additions & 0 deletions src/types.rs
Original file line number Diff line number Diff line change
@@ -838,6 +838,7 @@ pub enum KernelResponse {
KilledProcess(ProcessId),
}

// TODO maybe add CanNetwork
#[derive(Debug)]
pub enum CapMessage {
Add {
@@ -857,6 +858,11 @@ pub enum CapMessage {
cap: Capability,
responder: tokio::sync::oneshot::Sender<bool>,
},
CanMessage {
from: ProcessId,
to: Address,
responder: tokio::sync::oneshot::Sender<bool>,
},
_Drop {
// not used yet!
on: ProcessId,

0 comments on commit 087252b

Please sign in to comment.