mirror of
https://github.com/marcoallegretti/WEFT_OS.git
synced 2026-03-27 01:13:09 +00:00
feat(appd): include app_id in LaunchAck response
ipc.rs: LaunchAck gains app_id: String field so callers receive the
app identifier alongside the session handle in a single response.
main.rs: dispatch::LaunchApp constructs LaunchAck { session_id, app_id }
using the app_id that was already in scope.
Tests updated: dispatch_launch_returns_ack now asserts app_id value;
dispatch_terminate_known_returns_stopped and
dispatch_query_app_state_returns_starting use .. to ignore app_id.
This commit is contained in:
parent
fdeb440766
commit
b5bf2e538a
2 changed files with 19 additions and 6 deletions
|
|
@ -21,6 +21,7 @@ pub struct SessionInfo {
|
|||
pub enum Response {
|
||||
LaunchAck {
|
||||
session_id: u64,
|
||||
app_id: String,
|
||||
},
|
||||
AppReady {
|
||||
session_id: u64,
|
||||
|
|
@ -98,11 +99,17 @@ mod tests {
|
|||
|
||||
#[test]
|
||||
fn response_msgpack_roundtrip() {
|
||||
let resp = Response::LaunchAck { session_id: 7 };
|
||||
let resp = Response::LaunchAck {
|
||||
session_id: 7,
|
||||
app_id: "com.example.app".into(),
|
||||
};
|
||||
let bytes = rmp_serde::to_vec(&resp).unwrap();
|
||||
let decoded: Response = rmp_serde::from_slice(&bytes).unwrap();
|
||||
match decoded {
|
||||
Response::LaunchAck { session_id } => assert_eq!(session_id, 7),
|
||||
Response::LaunchAck { session_id, app_id } => {
|
||||
assert_eq!(session_id, 7);
|
||||
assert_eq!(app_id, "com.example.app");
|
||||
}
|
||||
_ => panic!("wrong variant"),
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -215,7 +215,7 @@ pub(crate) async fn dispatch(req: Request, registry: &Registry) -> Response {
|
|||
tracing::warn!(session_id, error = %e, "runtime supervisor error");
|
||||
}
|
||||
});
|
||||
Response::LaunchAck { session_id }
|
||||
Response::LaunchAck { session_id, app_id }
|
||||
}
|
||||
Request::TerminateApp { session_id } => {
|
||||
let found = registry.lock().await.terminate(session_id);
|
||||
|
|
@ -274,7 +274,13 @@ mod tests {
|
|||
)
|
||||
.await;
|
||||
match resp {
|
||||
Response::LaunchAck { session_id } => assert!(session_id > 0),
|
||||
Response::LaunchAck {
|
||||
session_id,
|
||||
ref app_id,
|
||||
} => {
|
||||
assert!(session_id > 0);
|
||||
assert_eq!(app_id, "com.test.app");
|
||||
}
|
||||
_ => panic!("expected LaunchAck"),
|
||||
}
|
||||
}
|
||||
|
|
@ -291,7 +297,7 @@ mod tests {
|
|||
)
|
||||
.await;
|
||||
let session_id = match ack {
|
||||
Response::LaunchAck { session_id } => session_id,
|
||||
Response::LaunchAck { session_id, .. } => session_id,
|
||||
_ => panic!("expected LaunchAck"),
|
||||
};
|
||||
let resp = dispatch(Request::TerminateApp { session_id }, ®).await;
|
||||
|
|
@ -354,7 +360,7 @@ mod tests {
|
|||
)
|
||||
.await;
|
||||
let session_id = match ack {
|
||||
Response::LaunchAck { session_id } => session_id,
|
||||
Response::LaunchAck { session_id, .. } => session_id,
|
||||
_ => panic!(),
|
||||
};
|
||||
let resp = dispatch(Request::QueryAppState { session_id }, ®).await;
|
||||
|
|
|
|||
Loading…
Reference in a new issue