chore: fix linting issues

This commit is contained in:
michel
2025-10-25 18:13:45 +02:00
committed by Michel de Graaf
parent 27258a09f0
commit f196c86328
7 changed files with 60 additions and 34 deletions
+21 -9
View File
@@ -1,6 +1,9 @@
use crate::{ use crate::{
error::{Result, SoulseekRs}, error::{Result, SoulseekRs},
peer::{ConnectionType, DefaultPeer, DownloadPeer, NewPeer, Peer}, peer::{
listen::Listen, ConnectionType, DefaultPeer, DownloadPeer, NewPeer,
Peer,
},
server::{PeerAddress, Server, ServerOperation}, server::{PeerAddress, Server, ServerOperation},
types::{Download, FileSearchResult}, types::{Download, FileSearchResult},
utils::{md5, thread_pool::ThreadPool}, utils::{md5, thread_pool::ThreadPool},
@@ -46,6 +49,12 @@ pub struct ClientContext {
pub download_tokens: HashMap<u32, Download>, pub download_tokens: HashMap<u32, Download>,
thread_pool: ThreadPool, thread_pool: ThreadPool,
} }
impl Default for ClientContext {
fn default() -> Self {
Self::new()
}
}
impl ClientContext { impl ClientContext {
pub fn new() -> Self { pub fn new() -> Self {
Self { Self {
@@ -105,9 +114,9 @@ impl Client {
server.get_address().get_port() server.get_address().get_port()
); );
// thread::spawn(move || { thread::spawn(move || {
// Listen::start(2234, client_sender.clone()); Listen::start(2234, client_sender.clone());
// }); });
let mut unlocked_context = self.context.lock().unwrap(); let mut unlocked_context = self.context.lock().unwrap();
unlocked_context.server_sender = unlocked_context.server_sender =
Some(server.get_sender().clone()); Some(server.get_sender().clone());
@@ -242,14 +251,15 @@ impl Client {
client_context.clone(), client_context.clone(),
own_username.clone(), own_username.clone(),
None, None,
) );
} }
ClientOperation::SearchResult(file_search) => { ClientOperation::SearchResult(file_search) => {
trace!("[client] SearchResult {:?}", file_search);
client_context client_context
.lock() .lock()
.unwrap() .unwrap()
.search_results .search_results
.push(file_search); .push(file_search.clone());
} }
ClientOperation::PeerDisconnected(username) => { ClientOperation::PeerDisconnected(username) => {
let mut context = client_context.lock().unwrap(); let mut context = client_context.lock().unwrap();
@@ -283,8 +293,10 @@ impl Client {
false, false,
own_username, own_username,
); );
let filename: Option<&str> = let filename: Option<&str> = download
download.filename.split('\\').last(); .filename
.split('\\')
.next_back();
match filename { match filename {
Some(filename) => { Some(filename) => {
match download_peer.download_file( match download_peer.download_file(
@@ -454,7 +466,7 @@ impl Client {
let connect_result = match stream { let connect_result = match stream {
Some(s) => default_peer.connect_with_socket(s), Some(s) => default_peer.connect_with_socket(s),
None => default_peer.connect() _ => default_peer.connect()
}; };
match connect_result { match connect_result {
+1 -1
View File
@@ -12,7 +12,7 @@ fn main() {
client.connect(); client.connect();
match client.login() { match client.login() {
Ok(_) => { Ok(_) => {
match client.search("michel test file", Duration::from_secs(1)) { match client.search("michel test file", Duration::from_secs(4)) {
Ok(results) => { Ok(results) => {
if let Some(result) = if let Some(result) =
results.iter().find(|r| !r.files.is_empty()) results.iter().find(|r| !r.files.is_empty())
+1 -1
View File
@@ -13,7 +13,7 @@ impl MessageHandler<PeerOperation> for PlaceInQueueResponse {
fn handle(&self, message: &mut Message, sender: Sender<PeerOperation>) { fn handle(&self, message: &mut Message, sender: Sender<PeerOperation>) {
let filename = message.read_string(); let filename = message.read_string();
let place = message.read_int32() as u32; let place = message.read_int32();
sender sender
.send(PeerOperation::PlaceInQueueResponse { filename, place }) .send(PeerOperation::PlaceInQueueResponse { filename, place })
+4 -3
View File
@@ -8,11 +8,12 @@ use crate::message::server::MessageFactory;
use crate::message::{Handlers, Message, MessageReader, MessageType}; use crate::message::{Handlers, Message, MessageReader, MessageType};
use crate::types::{Download, FileSearchResult, Transfer}; use crate::types::{Download, FileSearchResult, Transfer};
use core::result::Result::Ok;
use std::sync::mpsc; use std::sync::mpsc;
use std::sync::mpsc::{Receiver, Sender}; use std::sync::mpsc::{Receiver, Sender};
use std::thread::{self, JoinHandle}; use std::thread::{self, JoinHandle};
use crate::client::{self, ClientOperation}; use crate::client::ClientOperation;
use crate::peer::Peer; use crate::peer::Peer;
use crate::{debug, error, trace, warn}; use crate::{debug, error, trace, warn};
use std::io::{self, Write}; use std::io::{self, Write};
@@ -161,7 +162,7 @@ impl DefaultPeer {
let mut buffered_reader = MessageReader::new(); let mut buffered_reader = MessageReader::new();
loop { loop {
match buffered_reader.read_from_socket(&mut read_stream) { match buffered_reader.read_from_socket(&mut read_stream) {
Ok(_) => {} Ok(()) => {}
Err(ref e) if e.kind() == io::ErrorKind::WouldBlock => { Err(ref e) if e.kind() == io::ErrorKind::WouldBlock => {
continue continue
} }
@@ -213,7 +214,7 @@ impl DefaultPeer {
should_terminate = true; should_terminate = true;
break; break;
} }
Ok(None) => break, Ok(_) => break,
} }
} }
if should_terminate { if should_terminate {
+1 -1
View File
@@ -63,7 +63,7 @@ impl FileManager {
fn extract_filename_from_path(full_path: &str) -> String { fn extract_filename_from_path(full_path: &str) -> String {
// Split on both forward slashes and backslashes to handle Windows and Unix paths // Split on both forward slashes and backslashes to handle Windows and Unix paths
full_path.split(['/', '\\']).last().unwrap_or(full_path).to_string() full_path.split(['/', '\\']).next_back().unwrap_or(full_path).to_string()
} }
fn create_download_path_from_filename( fn create_download_path_from_filename(
+31 -18
View File
@@ -4,8 +4,7 @@ use std::{io, net::TcpListener};
use crate::client::ClientOperation; use crate::client::ClientOperation;
use crate::message::MessageReader; use crate::message::MessageReader;
use crate::peer::NewPeer; use crate::{debug, error, info, trace, warn, FileSearchResult};
use crate::{debug, error, info, trace, warn};
pub struct Listen {} pub struct Listen {}
@@ -15,12 +14,11 @@ impl Listen {
let listener = TcpListener::bind(format!("0.0.0.0:{port}")).unwrap(); let listener = TcpListener::bind(format!("0.0.0.0:{port}")).unwrap();
for stream in listener.incoming() { for stream in listener.incoming() {
let mut read_stream = stream.unwrap(); let mut read_stream = stream.unwrap();
let mut stop = false;
let mut buffered_reader = MessageReader::new(); let mut buffered_reader = MessageReader::new();
while !stop { loop {
match buffered_reader.read_from_socket(&mut read_stream) { match buffered_reader.read_from_socket(&mut read_stream) {
Ok(_) => {} Ok(()) => {}
Err(ref e) if e.kind() == io::ErrorKind::WouldBlock => { Err(ref e) if e.kind() == io::ErrorKind::WouldBlock => {
continue continue
} }
@@ -48,23 +46,38 @@ impl Listen {
match message_code { match message_code {
0 => { 0 => {
let token = message.read_string(); // let token = message.read_string();
debug!("[listener] received Pierce Firewall, token: {}", token); // debug!("[listener] received Pierce Firewall, token: {}", token);
} }
1 => { 1 => {
let tcp_stream = // handle handover to default_peer with socket in the future
read_stream.try_clone().unwrap(); // let tcp_stream =
let new_peer = NewPeer::new_from_message( // read_stream.try_clone().unwrap();
&mut message, //
tcp_stream, // let username = message.read_string();
); // let connection_type =
// message.read_string().parse().unwrap();
trace!("[listener] Handling peer init message: {:?}",new_peer); // let token = message.read_int32();
}
9 => {
trace!("[listener] Handling file search response: 9",);
message.set_pointer(8);
let file_search =
match FileSearchResult::new_from_message(
&mut message,
) {
Ok(result) => result,
Err(e) => {
trace!("[listener] malformed filesearch_result: {:?}, message: {:?}", e, message);
return;
}
};
client_sender client_sender
.send(ClientOperation::NewPeer(new_peer)) .send(ClientOperation::SearchResult(
file_search,
))
.unwrap(); .unwrap();
stop = true; break;
debug!("[listener] stop");
} }
_ => { _ => {
debug!( debug!(
+1 -1
View File
@@ -72,7 +72,7 @@ pub fn deflate(input: &[u8]) -> Result<Vec<u8>> {
return Err(SoulseekRs::CompressionError("invalid CINFO".to_string())); return Err(SoulseekRs::CompressionError("invalid CINFO".to_string()));
} }
let flg = r.read_byte()?; let flg = r.read_byte()?;
if ((cmf as u32) * 256 + (flg as u32)) % 31 != 0 { if !((cmf as u32) * 256 + (flg as u32)).is_multiple_of(31) {
return Err(SoulseekRs::CompressionError( return Err(SoulseekRs::CompressionError(
"CMF+FLG checksum failed".to_string(), "CMF+FLG checksum failed".to_string(),
)); ));