|
1 | 1 | use std::{ |
2 | 2 | collections::HashMap, |
| 3 | + fmt::Display, |
3 | 4 | net::{IpAddr, Ipv4Addr, Ipv6Addr}, |
4 | 5 | sync::{ |
5 | 6 | Arc, |
@@ -124,6 +125,42 @@ pub enum PeerMessages { |
124 | 125 | KeepAlive, |
125 | 126 | } |
126 | 127 |
|
| 128 | +impl Display for PeerMessages { |
| 129 | + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { |
| 130 | + match self { |
| 131 | + PeerMessages::Handshake(handshake) => write!(f, "Handshake({})", handshake.peer_id), |
| 132 | + PeerMessages::Choke => write!(f, "Choke"), |
| 133 | + PeerMessages::Unchoke => write!(f, "Unchoke"), |
| 134 | + PeerMessages::Interested => write!(f, "Interested"), |
| 135 | + PeerMessages::NotInterested => write!(f, "NotInterested"), |
| 136 | + PeerMessages::Have(index) => write!(f, "Have({})", index), |
| 137 | + PeerMessages::Bitfield(bitfield) => write!( |
| 138 | + f, |
| 139 | + "Bitfield(true: {}, false: {})", |
| 140 | + bitfield.count_ones(), |
| 141 | + bitfield.count_zeros() |
| 142 | + ), |
| 143 | + PeerMessages::Request(index, begin, length) => { |
| 144 | + write!(f, "Request({}, {}, {})", index, begin, length) |
| 145 | + } |
| 146 | + PeerMessages::Piece(index, begin, data) => { |
| 147 | + write!(f, "Piece({}, {}, {})", index, begin, data.len()) |
| 148 | + } |
| 149 | + PeerMessages::Cancel(index, begin, length) => { |
| 150 | + write!(f, "Cancel({}, {}, {})", index, begin, length) |
| 151 | + } |
| 152 | + PeerMessages::Extended(extended_id, handshake_message, metadata) => write!( |
| 153 | + f, |
| 154 | + "Extended({}, {:?}, {:?})", |
| 155 | + extended_id, |
| 156 | + handshake_message, |
| 157 | + metadata.as_ref().map(|m| m.len()) |
| 158 | + ), |
| 159 | + PeerMessages::KeepAlive => write!(f, "KeepAlive"), |
| 160 | + } |
| 161 | + } |
| 162 | +} |
| 163 | + |
127 | 164 | impl PeerMessages { |
128 | 165 | pub fn to_bytes(&self) -> Result<Bytes, PeerActorError> { |
129 | 166 | Ok(match self { |
|
0 commit comments