Dispatch read one byte of the code, so a code with a non-zero high byte was handled as its low byte. Message::get_message_code now reads the whole little-endian uint32 and handlers register by u32. PeerInit and PierceFirewall, the only frames with a one-byte code, get their own accessor for the listener's first frame.
20 lines
521 B
Rust
20 lines
521 B
Rust
use crate::{
|
|
message::{Message, MessageHandler},
|
|
peer::PeerMessage,
|
|
};
|
|
use std::sync::mpsc::Sender;
|
|
|
|
/// A peer asking to download one of our shared files (peer code 43).
|
|
pub struct QueueUploadHandler;
|
|
|
|
impl MessageHandler<PeerMessage> for QueueUploadHandler {
|
|
fn get_code(&self) -> u32 {
|
|
43
|
|
}
|
|
|
|
fn handle(&self, message: &mut Message, sender: Sender<PeerMessage>) {
|
|
let filename = message.read_string();
|
|
let _ = sender.send(PeerMessage::IncomingQueueUpload(filename));
|
|
}
|
|
}
|