feat: actor refactoring default peer

This commit is contained in:
Michel de Graaf
2025-11-11 14:53:40 +01:00
parent 7bae6b36da
commit 3dc667fe30
17 changed files with 908 additions and 535 deletions
+4 -4
View File
@@ -1,21 +1,21 @@
use crate::message::{Message, MessageHandler};
use crate::peer::PeerOperation;
use crate::peer::PeerMessage;
use crate::types::FileSearchResult;
use std::sync::mpsc::Sender;
pub struct FileSearchResponse;
impl MessageHandler<PeerOperation> for FileSearchResponse {
impl MessageHandler<PeerMessage> for FileSearchResponse {
fn get_code(&self) -> u8 {
9
}
fn handle(&self, message: &mut Message, sender: Sender<PeerOperation>) {
fn handle(&self, message: &mut Message, sender: Sender<PeerMessage>) {
let file_search = match FileSearchResult::new_from_message(message) {
Ok(result) => result,
Err(_) => return, // Skip malformed search results
};
sender
.send(PeerOperation::FileSearchResult(file_search))
.send(PeerMessage::FileSearchResult(file_search))
.unwrap();
}
}
+4 -4
View File
@@ -1,17 +1,17 @@
use crate::{
message::{server::MessageFactory, Message, MessageHandler},
peer::PeerOperation,
peer::PeerMessage,
};
use std::sync::mpsc::Sender;
pub struct GetShareFileList;
impl MessageHandler<PeerOperation> for GetShareFileList {
impl MessageHandler<PeerMessage> for GetShareFileList {
fn get_code(&self) -> u8 {
4
}
fn handle(&self, _message: &mut Message, sender: Sender<PeerOperation>) {
fn handle(&self, _message: &mut Message, sender: Sender<PeerMessage>) {
let message = MessageFactory::build_shared_folders_message(100, 800);
sender.send(PeerOperation::SendMessage(message)).unwrap();
sender.send(PeerMessage::SendMessage(message)).unwrap();
}
}
+4 -4
View File
@@ -2,17 +2,17 @@ use std::sync::mpsc::Sender;
use crate::{
message::{Message, MessageHandler},
peer::PeerOperation,
peer::PeerMessage,
trace,
};
pub struct PeerInit;
impl MessageHandler<PeerOperation> for PeerInit {
impl MessageHandler<PeerMessage> for PeerInit {
fn get_code(&self) -> u8 {
1
}
fn handle(&self, message: &mut Message, sender: Sender<PeerOperation>) {
fn handle(&self, message: &mut Message, sender: Sender<PeerMessage>) {
message.set_pointer(4);
let _message_code = message.read_int8();
let username = message.read_string();
@@ -25,6 +25,6 @@ impl MessageHandler<PeerOperation> for PeerInit {
token
);
sender.send(PeerOperation::SetUsername(username)).unwrap();
sender.send(PeerMessage::SetUsername(username)).unwrap();
}
}
+4 -4
View File
@@ -1,22 +1,22 @@
use crate::{
message::{Message, MessageHandler},
peer::PeerOperation,
peer::PeerMessage,
};
use std::sync::mpsc::Sender;
pub struct PlaceInQueueResponse;
impl MessageHandler<PeerOperation> for PlaceInQueueResponse {
impl MessageHandler<PeerMessage> for PlaceInQueueResponse {
fn get_code(&self) -> u8 {
43
}
fn handle(&self, message: &mut Message, sender: Sender<PeerOperation>) {
fn handle(&self, message: &mut Message, sender: Sender<PeerMessage>) {
let filename = message.read_string();
let place = message.read_int32();
sender
.send(PeerOperation::PlaceInQueueResponse { filename, place })
.send(PeerMessage::PlaceInQueueResponse { filename, place })
.unwrap();
}
}
+4 -4
View File
@@ -1,20 +1,20 @@
use crate::{
message::{Message, MessageHandler},
peer::PeerOperation,
peer::PeerMessage,
types::Transfer,
};
use std::sync::mpsc::Sender;
pub struct TransferRequest;
impl MessageHandler<PeerOperation> for TransferRequest {
impl MessageHandler<PeerMessage> for TransferRequest {
fn get_code(&self) -> u8 {
40
}
fn handle(&self, message: &mut Message, sender: Sender<PeerOperation>) {
fn handle(&self, message: &mut Message, sender: Sender<PeerMessage>) {
let transfer = Transfer::new_from_message(message);
sender
.send(PeerOperation::TransferRequest(transfer))
.send(PeerMessage::TransferRequest(transfer))
.unwrap();
}
}
+4 -4
View File
@@ -1,23 +1,23 @@
use crate::{
message::{Message, MessageHandler},
peer::PeerOperation,
peer::PeerMessage,
};
use std::sync::mpsc::Sender;
pub struct TransferResponse;
impl MessageHandler<PeerOperation> for TransferResponse {
impl MessageHandler<PeerMessage> for TransferResponse {
fn get_code(&self) -> u8 {
41
}
fn handle(&self, message: &mut Message, sender: Sender<PeerOperation>) {
fn handle(&self, message: &mut Message, sender: Sender<PeerMessage>) {
let token = message.read_int32();
let allowed = message.read_int8();
let reason = (allowed == 0).then(|| message.read_string());
sender
.send(PeerOperation::TransferResponse {
.send(PeerMessage::TransferResponse {
token,
allowed: allowed == 1,
reason,
+3 -3
View File
@@ -1,17 +1,17 @@
use crate::info;
use crate::{
message::{Message, MessageHandler},
peer::PeerOperation,
peer::PeerMessage,
types::UploadFailed,
};
use std::sync::mpsc::Sender;
pub struct UploadFailedHandler;
impl MessageHandler<PeerOperation> for UploadFailedHandler {
impl MessageHandler<PeerMessage> for UploadFailedHandler {
fn get_code(&self) -> u8 {
46
}
fn handle(&self, message: &mut Message, _sender: Sender<PeerOperation>) {
fn handle(&self, message: &mut Message, _sender: Sender<PeerMessage>) {
let upload_failed = UploadFailed::new_from_message(message);
info!("Upload failed for ${}", upload_failed.filename);
}