mirror of
https://github.com/saymrwulf/xous-core.git
synced 2026-11-04 04:27:34 +00:00
xous-names: implement non-blocking TryConnect call
This call can be used by clients to try connecting to a service. If the service is not available, this will fail to connect. Signed-off-by: Sean Cross <sean@xobs.io>
This commit is contained in:
parent
3ca57bcf8b
commit
3ca323f0bb
1 changed files with 11 additions and 4 deletions
|
|
@ -26,6 +26,9 @@ enum ConnectError {
|
|||
|
||||
/// The message was not a mutable memory message
|
||||
InvalidMessageType = 4,
|
||||
|
||||
/// The server does not currently exist, and a blocking request was made
|
||||
ServerNotFound = 5,
|
||||
}
|
||||
|
||||
#[derive(PartialEq)]
|
||||
|
|
@ -464,7 +467,7 @@ fn main() -> ! {
|
|||
xous::return_scalar(msg.sender, 0).unwrap();
|
||||
}
|
||||
}),
|
||||
Some(api::Opcode::BlockingConnect) => {
|
||||
Some(api::Opcode::BlockingConnect) | Some(api::Opcode::TryConnect) => {
|
||||
if !msg.body.is_blocking() {
|
||||
continue;
|
||||
}
|
||||
|
|
@ -479,9 +482,13 @@ fn main() -> ! {
|
|||
respond_connect_success(msg, cid, disc)
|
||||
}
|
||||
Ok(ConnectSuccess::Wait) => {
|
||||
// Push waiting connections here, which will prevent it from getting
|
||||
// dropped and responded to.
|
||||
waiting_connections.push(msg);
|
||||
if msg.body.id() == api::Opcode::TryConnect as usize {
|
||||
respond_connect_error(msg, ConnectError::ServerNotFound);
|
||||
} else {
|
||||
// Push waiting connections here, which will prevent it from getting
|
||||
// dropped and responded to.
|
||||
waiting_connections.push(msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue