Vectrum
Sign In

Box the Genome in host replies to keep ServerMessage small

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
JjohannSocommitted 1 parent 2b41c45commitbeca812

Showing 3 changed files with 5 additions and 5 deletions.

+2−2src/remote/mod.rsView File
@@ -326,7 +326,7 @@ pub struct GenomeAnswer {
326326 /// when there's no Genome yet.
327327 pub written: Option<u64>,
328328 /// The map, unless it's unchanged since the client's or missing.
329- pub genome: Option<crate::genome::Genome>,
329+ pub genome: Option<Box<crate::genome::Genome>>,
330330 /// It's the one the client has.
331331 pub unchanged: bool,
332332 pub error: Option<String>,
@@ -1134,7 +1134,7 @@ mod tests {
11341134 edges: Vec::new(),
11351135 layout: vec![(0.5, 0.5)],
11361136 };
1137- let answer = GenomeAnswer { written: Some(42), genome: Some(genome), ..GenomeAnswer::default() };
1137+ let answer = GenomeAnswer { written: Some(42), genome: Some(Box::new(genome)), ..GenomeAnswer::default() };
11381138 let text = serde_json::to_string(&ServerMessage::GenomeReply { request: 3, answer: answer.clone() }).unwrap();
11391139 match serde_json::from_str::<ServerMessage>(&text).unwrap() {
11401140 ServerMessage::GenomeReply { request: 3, answer: received } => assert_eq!(received, answer),
+2−2src/ui/workspace/genome.rsView File
@@ -156,7 +156,7 @@ impl Workspace {
156156 let read = cx.background_executor().spawn(async move {
157157 let written = genome::written_at(&cwd);
158158 match genome::load(&cwd) {
159- Ok(genome) => GenomeAnswer { written, genome, ..GenomeAnswer::default() },
159+ Ok(genome) => GenomeAnswer { written, genome: genome.map(Box::new), ..GenomeAnswer::default() },
160160 Err(err) => GenomeAnswer { written, error: Some(format!("{err:#}")), ..GenomeAnswer::default() },
161161 }
162162 });
@@ -216,7 +216,7 @@ impl Workspace {
216216 panel.hovered = None;
217217 panel.load = match (answer.error, answer.genome) {
218218 (Some(error), _) => GenomeLoad::Failed(error),
219- (None, Some(genome)) => GenomeLoad::Ready(Arc::new(genome)),
219+ (None, Some(genome)) => GenomeLoad::Ready(Arc::new(*genome)),
220220 (None, None) => GenomeLoad::Missing,
221221 };
222222 cx.notify();
+1−1src/ui/workspace/remote.rsView File
@@ -659,7 +659,7 @@ impl Workspace {
659659 return GenomeAnswer { written, unchanged: true, ..GenomeAnswer::default() };
660660 }
661661 match crate::genome::load(&cwd) {
662- Ok(genome) => GenomeAnswer { written, genome, ..GenomeAnswer::default() },
662+ Ok(genome) => GenomeAnswer { written, genome: genome.map(Box::new), ..GenomeAnswer::default() },
663663 Err(err) => GenomeAnswer { written, error: Some(format!("{err:#}")), ..GenomeAnswer::default() },
664664 }
665665 });