chore: fix linting issues
This commit is contained in:
+21
-9
@@ -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
@@ -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())
|
||||
|
||||
@@ -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 })
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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(
|
||||
|
||||
+30
-17
@@ -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(
|
||||
// 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,
|
||||
tcp_stream,
|
||||
);
|
||||
|
||||
trace!("[listener] Handling peer init message: {:?}",new_peer);
|
||||
) {
|
||||
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
@@ -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(),
|
||||
));
|
||||
|
||||
Reference in New Issue
Block a user