aboutsummaryrefslogtreecommitdiff
path: root/src/server/headless.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/headless.rs')
-rw-r--r--src/server/headless.rs19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/server/headless.rs b/src/server/headless.rs
index 2d652378..beda84b5 100644
--- a/src/server/headless.rs
+++ b/src/server/headless.rs
@@ -2006,6 +2006,21 @@ impl HeadlessServer {
);
let location =
crate::server::clients::ClientShellLocation::from_snapshot(&seed_snapshot);
+ let agent_view = self.app.state.agent_view_override.clone();
+ let projection_message = match agent_view.as_ref() {
+ Some(view) => match crate::protocol::endpoint::agent_view_projection_message(
+ &seed_snapshot.boot_id,
+ seed_snapshot.revision,
+ Some(view),
+ ) {
+ Ok(message) => Some(message),
+ Err(err) => {
+ warn!(client_id, err = %err, "failed to encode endpoint agent view");
+ return false;
+ }
+ },
+ None => None,
+ };
let snapshot_message =
match crate::protocol::endpoint::snapshot_message(&seed_snapshot) {
Ok(message) => message,
@@ -2016,10 +2031,14 @@ impl HeadlessServer {
};
connection.shell_location = Some(location);
connection.shell_snapshot = Some(seed_snapshot);
+ connection.shell_agent_view = agent_view;
self.clients.insert(client_id, connection);
if self.app.state.popup_pane.is_some() && self.popup_owner_tab_id.is_none() {
self.popup_owner_tab_id = self.shell_tab_id_for_client(client_id);
}
+ if let Some(message) = projection_message {
+ self.send_to_client(client_id, message);
+ }
self.send_to_client(client_id, snapshot_message);
if surface_active {
self.foreground_client_id = Some(client_id);