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::{
error::{Result, SoulseekRs},
peer::{ConnectionType, DefaultPeer, DownloadPeer, NewPeer, Peer},
peer::{
listen::Listen, ConnectionType, DefaultPeer, DownloadPeer, NewPeer,
Peer,
},
server::{PeerAddress, Server, ServerOperation},
types::{Download, FileSearchResult},
utils::{md5, thread_pool::ThreadPool},
@@ -46,6 +49,12 @@ pub struct ClientContext {
pub download_tokens: HashMap<u32, Download>,
thread_pool: ThreadPool,
}
impl Default for ClientContext {
fn default() -> Self {
Self::new()
}
}
impl ClientContext {
pub fn new() -> Self {
Self {
@@ -105,9 +114,9 @@ impl Client {
server.get_address().get_port()
);
// thread::spawn(move || {
// Listen::start(2234, client_sender.clone());
// });
thread::spawn(move || {
Listen::start(2234, client_sender.clone());
});
let mut unlocked_context = self.context.lock().unwrap();
unlocked_context.server_sender =
Some(server.get_sender().clone());
@@ -242,14 +251,15 @@ impl Client {
client_context.clone(),
own_username.clone(),
None,
)
);
}
ClientOperation::SearchResult(file_search) => {
trace!("[client] SearchResult {:?}", file_search);
client_context
.lock()
.unwrap()
.search_results
.push(file_search);
.push(file_search.clone());
}
ClientOperation::PeerDisconnected(username) => {
let mut context = client_context.lock().unwrap();
@@ -283,8 +293,10 @@ impl Client {
false,
own_username,
);
let filename: Option<&str> =
download.filename.split('\\').last();
let filename: Option<&str> = download
.filename
.split('\\')
.next_back();
match filename {
Some(filename) => {
match download_peer.download_file(
@@ -454,7 +466,7 @@ impl Client {
let connect_result = match stream {
Some(s) => default_peer.connect_with_socket(s),
None => default_peer.connect()
_ => default_peer.connect()
};
match connect_result {
+1 -1
View File
@@ -12,7 +12,7 @@ fn main() {
client.connect();
match client.login() {
Ok(_) => {
match client.search("michel test file", Duration::from_secs(1)) {
match client.search("michel test file", Duration::from_secs(4)) {
Ok(results) => {
if let Some(result) =
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>) {
let filename = message.read_string();
let place = message.read_int32() as u32;
let place = message.read_int32();
sender
.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::types::{Download, FileSearchResult, Transfer};
use core::result::Result::Ok;
use std::sync::mpsc;
use std::sync::mpsc::{Receiver, Sender};
use std::thread::{self, JoinHandle};
use crate::client::{self, ClientOperation};
use crate::client::ClientOperation;
use crate::peer::Peer;
use crate::{debug, error, trace, warn};
use std::io::{self, Write};
@@ -161,7 +162,7 @@ impl DefaultPeer {
let mut buffered_reader = MessageReader::new();
loop {
match buffered_reader.read_from_socket(&mut read_stream) {
Ok(_) => {}
Ok(()) => {}
Err(ref e) if e.kind() == io::ErrorKind::WouldBlock => {
continue
}
@@ -213,7 +214,7 @@ impl DefaultPeer {
should_terminate = true;
break;
}
Ok(None) => break,
Ok(_) => break,
}
}
if should_terminate {
+1 -1
View File
@@ -63,7 +63,7 @@ impl FileManager {
fn extract_filename_from_path(full_path: &str) -> String {
// 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(
+31 -18
View File
@@ -4,8 +4,7 @@ use std::{io, net::TcpListener};
use crate::client::ClientOperation;
use crate::message::MessageReader;
use crate::peer::NewPeer;
use crate::{debug, error, info, trace, warn};
use crate::{debug, error, info, trace, warn, FileSearchResult};
pub struct Listen {}
@@ -15,12 +14,11 @@ impl Listen {
let listener = TcpListener::bind(format!("0.0.0.0:{port}")).unwrap();
for stream in listener.incoming() {
let mut read_stream = stream.unwrap();
let mut stop = false;
let mut buffered_reader = MessageReader::new();
while !stop {
loop {
match buffered_reader.read_from_socket(&mut read_stream) {
Ok(_) => {}
Ok(()) => {}
Err(ref e) if e.kind() == io::ErrorKind::WouldBlock => {
continue
}
@@ -48,23 +46,38 @@ impl Listen {
match message_code {
0 => {
let token = message.read_string();
debug!("[listener] received Pierce Firewall, token: {}", token);
// let token = message.read_string();
// debug!("[listener] received Pierce Firewall, token: {}", token);
}
1 => {
let tcp_stream =
read_stream.try_clone().unwrap();
let new_peer = NewPeer::new_from_message(
&mut message,
tcp_stream,
);
trace!("[listener] Handling peer init message: {:?}",new_peer);
// handle handover to default_peer with socket in the future
// let tcp_stream =
// read_stream.try_clone().unwrap();
//
// let username = message.read_string();
// let connection_type =
// message.read_string().parse().unwrap();
// 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
.send(ClientOperation::NewPeer(new_peer))
.send(ClientOperation::SearchResult(
file_search,
))
.unwrap();
stop = true;
debug!("[listener] stop");
break;
}
_ => {
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()));
}
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(
"CMF+FLG checksum failed".to_string(),
));