Use bincode instead of serde_json in iced_sentinel

This commit is contained in:
Héctor Ramón Jiménez 2024-02-27 16:16:52 +01:00
parent 4f8ed7d6ee
commit 0870b158d7
No known key found for this signature in database
GPG key ID: 7CC46565708259A7
4 changed files with 33 additions and 37 deletions

View file

@ -128,6 +128,7 @@ iced_widget = { version = "0.13.0-dev", path = "widget" }
iced_winit = { version = "0.13.0-dev", path = "winit" } iced_winit = { version = "0.13.0-dev", path = "winit" }
async-std = "1.0" async-std = "1.0"
bincode = "1.3"
bitflags = "2.0" bitflags = "2.0"
bytemuck = { version = "1.0", features = ["derive"] } bytemuck = { version = "1.0", features = ["derive"] }
cosmic-text = "0.10" cosmic-text = "0.10"
@ -151,7 +152,6 @@ raw-window-handle = "0.6"
resvg = "0.36" resvg = "0.36"
rustc-hash = "1.0" rustc-hash = "1.0"
serde = "1.0" serde = "1.0"
serde_json = "1.0"
semver = "1.0" semver = "1.0"
smol = "1.0" smol = "1.0"
smol_str = "0.2" smol_str = "0.2"

View file

@ -16,7 +16,7 @@ iced_core.workspace = true
iced_style.workspace = true iced_style.workspace = true
iced_style.features = ["serde"] iced_style.features = ["serde"]
serde_json.workspace = true bincode.workspace = true
futures.workspace = true futures.workspace = true
log.workspace = true log.workspace = true

View file

@ -69,16 +69,11 @@ async fn send(
stream: &mut io::BufStream<net::TcpStream>, stream: &mut io::BufStream<net::TcpStream>,
input: Input, input: Input,
) -> Result<(), io::Error> { ) -> Result<(), io::Error> {
stream let bytes = bincode::serialize(&input).expect("Encode input message");
.write_all( let size = bytes.len() as u64;
format!(
"{}\n",
serde_json::to_string(&input).expect("Serialize input message")
)
.as_bytes(),
)
.await?;
stream.write_all(&size.to_be_bytes()).await?;
stream.write_all(&bytes).await?;
stream.flush().await?; stream.flush().await?;
Ok(()) Ok(())

View file

@ -11,7 +11,7 @@ use futures::future;
use futures::stream::{self, Stream, StreamExt}; use futures::stream::{self, Stream, StreamExt};
use semver::Version; use semver::Version;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use tokio::io::{self, AsyncBufReadExt, BufStream}; use tokio::io::{self, AsyncReadExt, BufStream};
use tokio::net; use tokio::net;
pub const SOCKET_ADDRESS: &str = "127.0.0.1:9167"; pub const SOCKET_ADDRESS: &str = "127.0.0.1:9167";
@ -74,33 +74,34 @@ async fn connect() -> Result<net::TcpStream, io::Error> {
async fn receive( async fn receive(
mut stream: BufStream<net::TcpStream>, mut stream: BufStream<net::TcpStream>,
) -> Result<(BufStream<net::TcpStream>, Event), io::Error> { ) -> Result<(BufStream<net::TcpStream>, Event), io::Error> {
let mut input = String::new(); let mut bytes = Vec::new();
loop { loop {
match stream.read_line(&mut input).await? { let size = stream.read_u64().await? as usize;
0 => return Ok((stream, Event::Disconnected)),
n => { if bytes.len() < size {
match serde_json::from_str(&input[..n]) { bytes.resize(size, 0);
Ok(input) => { }
return Ok((
stream, let _n = stream.read_exact(&mut bytes[..size]).await?;
match dbg!(input) {
Input::Connected(version) => { match bincode::deserialize(&bytes) {
Event::Connected(version) Ok(input) => {
} return Ok((
Input::TimingMeasured(timing) => { stream,
Event::TimingMeasured(timing) match dbg!(input) {
} Input::Connected(version) => Event::Connected(version),
Input::ThemeChanged(palette) => { Input::TimingMeasured(timing) => {
Event::ThemeChanged(palette) Event::TimingMeasured(timing)
} }
}, Input::ThemeChanged(palette) => {
)) Event::ThemeChanged(palette)
} }
Err(_) => { },
// TODO: Log decoding error ));
} }
} Err(_) => {
// TODO: Log decoding error
} }
} }
} }