From 897eb54e982f46380aa18225c184653e5b7af876 Mon Sep 17 00:00:00 2001 From: sxyazi Date: Sun, 2 Jun 2024 02:36:47 +0800 Subject: [PATCH] .. --- yazi-dds/src/body/body.rs | 8 -------- yazi-dds/src/body/hey.rs | 3 --- yazi-dds/src/body/hi.rs | 4 +--- yazi-dds/src/client.rs | 12 ++++++++++-- 4 files changed, 11 insertions(+), 16 deletions(-) diff --git a/yazi-dds/src/body/body.rs b/yazi-dds/src/body/body.rs index d3ed0d3e..ee812521 100644 --- a/yazi-dds/src/body/body.rs +++ b/yazi-dds/src/body/body.rs @@ -100,14 +100,6 @@ impl<'a> Body<'a> { } } - #[inline] - pub fn as_hey(&self) -> Option<&BodyHey> { - match self { - Self::Hey(b) => Some(b), - _ => None, - } - } - #[inline] pub fn with_receiver(self, receiver: u64) -> Payload<'a> { Payload::new(self).with_receiver(receiver) diff --git a/yazi-dds/src/body/hey.rs b/yazi-dds/src/body/hey.rs index 64dd941a..58d8cf93 100644 --- a/yazi-dds/src/body/hey.rs +++ b/yazi-dds/src/body/hey.rs @@ -17,9 +17,6 @@ impl BodyHey { pub fn owned(peers: HashMap) -> Body<'static> { Self { peers, version: BodyHi::version() }.into() } - - #[inline] - pub fn match_version(&self) -> bool { self.version == BodyHi::version() } } impl From for Body<'_> { diff --git a/yazi-dds/src/body/hi.rs b/yazi-dds/src/body/hi.rs index 5ca5beb6..c60a2370 100644 --- a/yazi-dds/src/body/hi.rs +++ b/yazi-dds/src/body/hi.rs @@ -22,9 +22,7 @@ impl<'a> BodyHi<'a> { } #[inline] - pub(super) fn version() -> String { - format!("{} {}", env!("CARGO_PKG_VERSION"), env!("VERGEN_GIT_SHA")) - } + pub fn version() -> String { format!("{} {}", env!("CARGO_PKG_VERSION"), env!("VERGEN_GIT_SHA")) } } impl<'a> From> for Body<'a> { diff --git a/yazi-dds/src/client.rs b/yazi-dds/src/client.rs index 19d4f321..f99b052f 100644 --- a/yazi-dds/src/client.rs +++ b/yazi-dds/src/client.rs @@ -77,11 +77,12 @@ impl Client { writer.flush().await?; drop(writer); + let mut version = None; while let Ok(Some(line)) = lines.next_line().await { match line.split(',').next() { Some("hey") => { - if !Payload::from_str(&line)?.body.as_hey().is_some_and(|b| b.match_version()) { - bail!("Server version mismatch - `yazi` and `ya` must have the same version") + if let Ok(Body::Hey(hey)) = Payload::from_str(&line).map(|p| p.body) { + version = Some(hey.version); } } Some("bye") => break, @@ -89,6 +90,13 @@ impl Client { } } + if version != Some(BodyHi::version()) { + bail!( + "Incompatible version - Yazi {} <==> Ya {}", + version.as_deref().unwrap_or("Unknown"), + BodyHi::version() + ); + } Ok(()) }