From 4302d7484768bc3137fc7e314a1ecefb9871ef1c Mon Sep 17 00:00:00 2001 From: Michel de Graaf Date: Thu, 31 Jul 2025 20:33:30 +0200 Subject: [PATCH] chore: refactor module structure --- src/client.rs | 1 + src/dispatcher.rs | 2 + src/lib.rs | 25 ++++++++++++ src/main.rs | 22 ++--------- src/message/mod.rs | 9 +++-- src/message/peer/mod.rs | 14 ++++--- src/message/peer/upload_failed.rs | 1 + src/message/server/connect_to_peer.rs | 1 + src/message/server/excluded_search_phrases.rs | 1 + src/message/server/file_search.rs | 1 + src/message/server/login.rs | 1 + src/message/server/message_factory.rs | 2 +- src/message/server/message_user.rs | 1 + src/message/server/mod.rs | 39 +++++++++++-------- src/message/server/parent_min_speed.rs | 1 + src/message/server/parent_speed_ratio.rs | 1 + src/message/server/privileged_users.rs | 1 + src/message/server/wish_list_interval.rs | 1 + src/peer/default_peer.rs | 6 +-- src/peer/listen.rs | 2 + src/peer/mod.rs | 9 +++-- src/server.rs | 4 +- src/utils/mod.rs | 3 +- 23 files changed, 96 insertions(+), 52 deletions(-) create mode 100644 src/lib.rs diff --git a/src/client.rs b/src/client.rs index 2fd258f..b062fc9 100644 --- a/src/client.rs +++ b/src/client.rs @@ -17,6 +17,7 @@ use std::{ time::{Duration, Instant}, }; +use crate::{debug, error, info, trace, warn}; const MAX_THREADS: usize = 100; pub enum ClientOperation { ConnectToPeer(Peer), diff --git a/src/dispatcher.rs b/src/dispatcher.rs index 665a53e..b0f8649 100644 --- a/src/dispatcher.rs +++ b/src/dispatcher.rs @@ -1,6 +1,8 @@ use crate::message::{handlers::Handlers, Message}; use std::sync::mpsc::Sender; +use crate::{debug, error, info, trace, warn}; + /// Add `` to make it generic over any operation type. pub struct MessageDispatcher { sender: Sender, diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..9b32dad --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,25 @@ +// Core modules +pub mod client; +pub mod dispatcher; +pub mod message; +pub mod peer; +pub mod server; +pub mod types; +#[macro_use] +pub mod utils; +// Prelude module for commonly used items +pub mod prelude { + pub use crate::types::{ + DownloadResult, DownloadStatus, File, FileSearchResult, Transfer, + }; + pub use crate::{debug, error, info, trace, warn}; + pub use crate::{Client, PeerAddress}; +} + +// Re-export commonly used types +pub use client::Client; +pub use server::PeerAddress; +pub use types::{ + DownloadResult, DownloadStatus, File, FileSearchResult, Transfer, +}; + diff --git a/src/main.rs b/src/main.rs index bdbf112..a535044 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,24 +1,10 @@ -#[macro_use] -mod utils; -mod client; -mod dispatcher; -mod message; -mod peer; -mod server; -mod types; - -use client::Client; -use server::PeerAddress; -use std::time::Duration; - -// PeerAddress::new(String::from("server.slsknet.org"), 2416), fn main() { + use soulseek_download::{Client, PeerAddress}; + use std::time::Duration; + let mut client = Client::new( - // ServerAddress::new(String::from("localhost"), 2416), - // PeerAddress::new(String::from("127.0.0.1"), 2242), PeerAddress::new(String::from("server.slsknet.org"), 2242), String::from("insane_in_the_brain3"), - // String::from("invalid"), String::from("13375137"), ); @@ -34,7 +20,7 @@ fn main() { } } Err(e) => { - error!("Failed to login: {}", e); + eprintln!("Failed to login: {}", e); } } } diff --git a/src/message/mod.rs b/src/message/mod.rs index 2e86619..70a3a78 100644 --- a/src/message/mod.rs +++ b/src/message/mod.rs @@ -1,10 +1,13 @@ +pub use crate::{debug, error, info, trace, warn}; + pub mod handlers; -pub mod message_reader; +mod message_reader; pub mod peer; pub mod server; -pub use handlers::*; -pub use message_reader::*; +// Re-export commonly used items +pub use handlers::{MessageHandler, Handlers}; +pub use message_reader::MessageReader; use std::str; diff --git a/src/message/peer/mod.rs b/src/message/peer/mod.rs index d8fc986..51b67fa 100644 --- a/src/message/peer/mod.rs +++ b/src/message/peer/mod.rs @@ -1,6 +1,10 @@ -pub mod file_search_response; -pub mod get_share_file_list; -pub mod transfer_request; -pub mod upload_failed; +mod file_search_response; +mod get_share_file_list; +mod transfer_request; +mod upload_failed; -pub use self::file_search_response::*; +// Re-export handlers +pub use file_search_response::FileSearchResponse; +pub use get_share_file_list::GetShareFileList; +pub use transfer_request::TransferRequest; +pub use upload_failed::UploadFailedHandler; diff --git a/src/message/peer/upload_failed.rs b/src/message/peer/upload_failed.rs index 42de652..148aa8a 100644 --- a/src/message/peer/upload_failed.rs +++ b/src/message/peer/upload_failed.rs @@ -1,3 +1,4 @@ +use crate::{debug, error, info, trace, warn}; use crate::{ message::{Message, MessageHandler}, peer::PeerOperation, diff --git a/src/message/server/connect_to_peer.rs b/src/message/server/connect_to_peer.rs index 9233ae8..c7cca73 100644 --- a/src/message/server/connect_to_peer.rs +++ b/src/message/server/connect_to_peer.rs @@ -1,3 +1,4 @@ +use crate::{debug, error, info, trace, warn}; use crate::message::{Message, MessageHandler}; use crate::peer::{ConnectionType, Peer}; use crate::server::ServerOperation; diff --git a/src/message/server/excluded_search_phrases.rs b/src/message/server/excluded_search_phrases.rs index fdd9f8f..007c980 100644 --- a/src/message/server/excluded_search_phrases.rs +++ b/src/message/server/excluded_search_phrases.rs @@ -1,3 +1,4 @@ +use crate::{debug, error, info, trace, warn}; use crate::{ message::{Message, MessageHandler}, server::ServerOperation, diff --git a/src/message/server/file_search.rs b/src/message/server/file_search.rs index 895f5a5..30357a0 100644 --- a/src/message/server/file_search.rs +++ b/src/message/server/file_search.rs @@ -1,3 +1,4 @@ +use crate::{debug, error, info, trace, warn}; use std::sync::mpsc::Sender; use crate::{message::handlers::MessageHandler, diff --git a/src/message/server/login.rs b/src/message/server/login.rs index acaecca..2ab94f4 100644 --- a/src/message/server/login.rs +++ b/src/message/server/login.rs @@ -1,3 +1,4 @@ +use crate::{debug, error, info, trace, warn}; use std::sync::mpsc::Sender; use crate::{message::Message, server::ServerOperation}; diff --git a/src/message/server/message_factory.rs b/src/message/server/message_factory.rs index 858639c..a73e22a 100644 --- a/src/message/server/message_factory.rs +++ b/src/message/server/message_factory.rs @@ -1,4 +1,4 @@ -use crate::{message::Message, peer::ConnectionType, types::Transfer, utils::md5}; +use crate::{message::Message, peer::ConnectionType, types::Transfer, utils::md5::md5}; pub struct MessageFactory; impl MessageFactory { diff --git a/src/message/server/message_user.rs b/src/message/server/message_user.rs index a91af5e..4a6e9fa 100644 --- a/src/message/server/message_user.rs +++ b/src/message/server/message_user.rs @@ -2,6 +2,7 @@ use crate::{ message::{Message, MessageHandler}, server::{ServerOperation, UserMessage}, }; +use crate::{debug, error, info, trace, warn}; use std::sync::mpsc::Sender; pub struct MessageUser; diff --git a/src/message/server/mod.rs b/src/message/server/mod.rs index 59d0458..341160b 100644 --- a/src/message/server/mod.rs +++ b/src/message/server/mod.rs @@ -1,18 +1,25 @@ -pub mod connect_to_peer; -pub mod excluded_search_phrases; -pub mod file_search; -pub mod login; -pub mod message_factory; -pub mod message_user; -pub mod parent_min_speed; -pub mod parent_speed_ratio; -pub mod privileged_users; -pub mod room_list; -pub mod wish_list_interval; +mod connect_to_peer; +mod excluded_search_phrases; +mod file_search; +mod login; +mod message_factory; +mod message_user; +mod parent_min_speed; +mod parent_speed_ratio; +mod privileged_users; +mod room_list; +mod wish_list_interval; -pub use self::{ - connect_to_peer::*, excluded_search_phrases::*, file_search::*, login::*, message_factory::*, - message_user::*, parent_min_speed::*, parent_speed_ratio::*, privileged_users::*, room_list::*, - wish_list_interval::*, -}; +// Re-export handlers +pub use connect_to_peer::ConnectToPeerHandler; +pub use excluded_search_phrases::ExcludedSearchPhrasesHandler; +pub use file_search::FileSearchHandler; +pub use login::LoginHandler; +pub use message_factory::MessageFactory; +pub use message_user::MessageUser; +pub use parent_min_speed::ParentMinSpeedHandler; +pub use parent_speed_ratio::ParentSpeedRatioHandler; +pub use privileged_users::PrivilegedUsersHandler; +pub use room_list::RoomListHandler; +pub use wish_list_interval::WishListIntervalHandler; diff --git a/src/message/server/parent_min_speed.rs b/src/message/server/parent_min_speed.rs index e013ce7..3a4f3d6 100644 --- a/src/message/server/parent_min_speed.rs +++ b/src/message/server/parent_min_speed.rs @@ -1,3 +1,4 @@ +use crate::{debug, error, info, trace, warn}; use std::sync::mpsc::Sender; use crate::{ diff --git a/src/message/server/parent_speed_ratio.rs b/src/message/server/parent_speed_ratio.rs index b5e3214..66878e6 100644 --- a/src/message/server/parent_speed_ratio.rs +++ b/src/message/server/parent_speed_ratio.rs @@ -1,3 +1,4 @@ +use crate::{debug, error, info, trace, warn}; use std::sync::mpsc::Sender; use crate::{ diff --git a/src/message/server/privileged_users.rs b/src/message/server/privileged_users.rs index 8e82020..28cfe0e 100644 --- a/src/message/server/privileged_users.rs +++ b/src/message/server/privileged_users.rs @@ -1,3 +1,4 @@ +use crate::{debug, error, info, trace, warn}; use std::sync::mpsc::Sender; use crate::{ diff --git a/src/message/server/wish_list_interval.rs b/src/message/server/wish_list_interval.rs index 99951d7..b93d07c 100644 --- a/src/message/server/wish_list_interval.rs +++ b/src/message/server/wish_list_interval.rs @@ -1,3 +1,4 @@ +use crate::{debug, error, info, trace, warn}; use std::sync::mpsc::Sender; use crate::{ diff --git a/src/peer/default_peer.rs b/src/peer/default_peer.rs index cd5d658..5c44f7f 100644 --- a/src/peer/default_peer.rs +++ b/src/peer/default_peer.rs @@ -1,7 +1,5 @@ use crate::dispatcher::MessageDispatcher; -use crate::message::peer::get_share_file_list::GetShareFileList; -use crate::message::peer::transfer_request::TransferRequest; -use crate::message::peer::upload_failed::UploadFailedHandler; +use crate::message::peer::{GetShareFileList, TransferRequest, UploadFailedHandler}; use crate::message::peer::FileSearchResponse; use crate::message::server::MessageFactory; use crate::message::{Handlers, Message, MessageReader, MessageType}; @@ -18,6 +16,8 @@ use std::net::TcpStream; use std::net::ToSocketAddrs; use std::time::Duration; +use crate::{debug, error, info, trace, warn}; + #[allow(dead_code)] pub struct DefaultPeer { peer: Peer, diff --git a/src/peer/listen.rs b/src/peer/listen.rs index 044dc3e..76e5b40 100644 --- a/src/peer/listen.rs +++ b/src/peer/listen.rs @@ -4,6 +4,8 @@ use std::{io, net::TcpListener}; use crate::message::MessageReader; use crate::server::ServerOperation; +use crate::{debug, error, info, trace, warn}; + pub struct Listen {} impl Listen { diff --git a/src/peer/mod.rs b/src/peer/mod.rs index f8234fb..479904b 100644 --- a/src/peer/mod.rs +++ b/src/peer/mod.rs @@ -1,9 +1,10 @@ -pub mod default_peer; -pub use default_peer::*; - -pub mod download_peer; +mod default_peer; +mod download_peer; pub mod listen; +// Re-export commonly used items +pub use default_peer::{DefaultPeer, PeerOperation}; + use crate::message::Message; use core::fmt; use std::str::FromStr; diff --git a/src/server.rs b/src/server.rs index b6f9e3b..9d99b3f 100644 --- a/src/server.rs +++ b/src/server.rs @@ -14,7 +14,7 @@ use crate::message::server::WishListIntervalHandler; use crate::message::Handlers; use crate::message::Message; use crate::message::MessageReader; -use crate::peer::listen::Listen; +use crate::peer::{listen::Listen}; use crate::peer::ConnectionType; use crate::peer::Peer; @@ -26,6 +26,8 @@ use std::sync::{Arc, Barrier, Mutex}; use std::thread::{self}; use std::time::{Duration, Instant}; +use crate::{debug, error, info, trace, warn}; + #[derive(Debug, Clone)] pub struct PeerAddress { host: String, diff --git a/src/utils/mod.rs b/src/utils/mod.rs index 2db89bc..0fde4e4 100644 --- a/src/utils/mod.rs +++ b/src/utils/mod.rs @@ -4,4 +4,5 @@ pub mod md5; pub mod thread_pool; pub mod zlib; -pub use md5::*; +// Re-export commonly used items +pub use md5::md5;