diff --git a/breakwater-parser/benches/parsing.rs b/breakwater-parser/benches/parsing.rs index d3f7cb4..9347ded 100644 --- a/breakwater-parser/benches/parsing.rs +++ b/breakwater-parser/benches/parsing.rs @@ -1,7 +1,7 @@ -use std::{sync::Arc, time::Duration}; use std::sync::mpsc::channel; +use std::{sync::Arc, time::Duration}; -use breakwater_core::{framebuffer::FrameBuffer}; +use breakwater_core::framebuffer::FrameBuffer; #[cfg(target_arch = "x86_64")] use breakwater_parser::assembler::AssemblerParser; use breakwater_parser::{ diff --git a/breakwater-parser/src/lib.rs b/breakwater-parser/src/lib.rs index f7c8cb7..b653187 100644 --- a/breakwater-parser/src/lib.rs +++ b/breakwater-parser/src/lib.rs @@ -1,9 +1,9 @@ // Needed for simple implementation #![feature(portable_simd)] -use std::sync::mpsc::Sender; use enum_dispatch::enum_dispatch; use snafu::Snafu; +use std::sync::mpsc::Sender; #[cfg(target_arch = "x86_64")] pub mod assembler; @@ -14,7 +14,9 @@ pub mod refactored; #[derive(Debug, Snafu)] pub enum ParserError { #[snafu(display("Failed to write to TCP socket"))] - WriteToTcpSocket { source: std::sync::mpsc::SendError> }, + WriteToTcpSocket { + source: std::sync::mpsc::SendError>, + }, } #[enum_dispatch(ParserImplementation)] diff --git a/breakwater-parser/src/memchr.rs b/breakwater-parser/src/memchr.rs index b9f3823..7e3e106 100644 --- a/breakwater-parser/src/memchr.rs +++ b/breakwater-parser/src/memchr.rs @@ -1,5 +1,5 @@ -use std::sync::Arc; use std::sync::mpsc::Sender; +use std::sync::Arc; use breakwater_core::framebuffer::FrameBuffer; diff --git a/breakwater-parser/src/original.rs b/breakwater-parser/src/original.rs index bd3b667..1bf11f0 100644 --- a/breakwater-parser/src/original.rs +++ b/breakwater-parser/src/original.rs @@ -1,8 +1,8 @@ +use std::sync::mpsc::Sender; use std::{ simd::{num::SimdUint, u32x8, Simd}, sync::Arc, }; -use std::sync::mpsc::Sender; use breakwater_core::{framebuffer::FrameBuffer, HELP_TEXT}; @@ -130,15 +130,19 @@ impl Parser for OriginalParser { last_byte_parsed = i; i += 1; if let Some(rgb) = self.fb.get(x, y) { - message_sender.send( - format!( - "PX {} {} {:06x}\n", - // We don't want to return the actual (absolute) coordinates, the client should also get the result offseted - x - self.connection_x_offset, - y - self.connection_y_offset, - rgb.to_be() >> 8 - ).into_boxed_str().into_boxed_bytes() - ).expect("Failed to write message"); + message_sender + .send( + format!( + "PX {} {} {:06x}\n", + // We don't want to return the actual (absolute) coordinates, the client should also get the result offseted + x - self.connection_x_offset, + y - self.connection_y_offset, + rgb.to_be() >> 8 + ) + .into_boxed_str() + .into_boxed_bytes(), + ) + .expect("Failed to write message"); } continue; } @@ -159,9 +163,11 @@ impl Parser for OriginalParser { i += 4; last_byte_parsed = i - 1; - message_sender.send( + message_sender + .send( format!("SIZE {} {}\n", self.fb.get_width(), self.fb.get_height()) - .into_boxed_str().into_boxed_bytes() + .into_boxed_str() + .into_boxed_bytes(), ) .expect("Failed to write message"); continue; @@ -169,7 +175,8 @@ impl Parser for OriginalParser { i += 4; last_byte_parsed = i - 1; - message_sender.send(HELP_TEXT.into()) + message_sender + .send(HELP_TEXT.into()) .expect("Failed to write message"); continue; } diff --git a/breakwater-parser/src/refactored.rs b/breakwater-parser/src/refactored.rs index 267258c..77a5290 100644 --- a/breakwater-parser/src/refactored.rs +++ b/breakwater-parser/src/refactored.rs @@ -97,23 +97,19 @@ impl RefactoredParser { } #[inline(always)] - fn handle_size( - &self, - message_sender: &Sender>, - ) -> Result<(), ParserError> { + fn handle_size(&self, message_sender: &Sender>) -> Result<(), ParserError> { message_sender .send( - format!("SIZE {} {}\n", self.fb.get_width(), self.fb.get_height()).into_boxed_str().into_boxed_bytes(), + format!("SIZE {} {}\n", self.fb.get_width(), self.fb.get_height()) + .into_boxed_str() + .into_boxed_bytes(), ) .context(crate::WriteToTcpSocketSnafu)?; Ok(()) } #[inline(always)] - fn handle_help( - &self, - message_sender: &Sender>, - ) -> Result<(), ParserError> { + fn handle_help(&self, message_sender: &Sender>) -> Result<(), ParserError> { message_sender .send(HELP_TEXT.into()) .context(crate::WriteToTcpSocketSnafu)?; @@ -187,7 +183,8 @@ impl RefactoredParser { y - self.connection_y_offset, rgb.to_be() >> 8 ) - .into_boxed_str().into_boxed_bytes(), + .into_boxed_str() + .into_boxed_bytes(), ) .context(crate::WriteToTcpSocketSnafu)?; } diff --git a/breakwater/src/server.rs b/breakwater/src/server.rs index 9f36281..db71594 100644 --- a/breakwater/src/server.rs +++ b/breakwater/src/server.rs @@ -1,7 +1,7 @@ use std::collections::hash_map::Entry; use std::collections::HashMap; -use std::{cmp::min, net::IpAddr, sync::Arc, time::Duration}; use std::sync::mpsc::channel; +use std::{cmp::min, net::IpAddr, sync::Arc, time::Duration}; use breakwater_core::framebuffer::FrameBuffer; use breakwater_parser::{original::OriginalParser, Parser, ParserError}; @@ -156,7 +156,7 @@ pub async fn handle_connection( // Instead we bulk the statistics and send them pre-aggregated. let mut last_statistics = Instant::now(); let mut statistics_bytes_read: u64 = 0; - + let (message_sender, message_receiver) = channel::>(); loop { @@ -227,7 +227,10 @@ pub async fn handle_connection( } while let Ok(message) = message_receiver.try_recv() { - stream.write_all(message.as_ref()).await.expect("Failed to write to tcp stream") + stream + .write_all(message.as_ref()) + .await + .expect("Failed to write to tcp stream") } } }