chore: fix linting issues
This commit is contained in:
+21
-9
@@ -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
@@ -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())
|
||||||
|
|||||||
@@ -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 })
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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
@@ -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
@@ -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(),
|
||||||
));
|
));
|
||||||
|
|||||||
Reference in New Issue
Block a user