refactor out packet-building, test
This commit is contained in:
parent
04766c94c1
commit
cdc20fb59a
27
src/lib.rs
27
src/lib.rs
|
@ -16,6 +16,7 @@ use std::net::{SocketAddr, ToSocketAddrs, UdpSocket};
|
||||||
|
|
||||||
const MAC_SIZE: usize = 6;
|
const MAC_SIZE: usize = 6;
|
||||||
const MAC_PER_MAGIC: usize = 16;
|
const MAC_PER_MAGIC: usize = 16;
|
||||||
|
static HEADER: [u8; 6] = [0xFF; 6];
|
||||||
|
|
||||||
/// Wake-on-LAN packet
|
/// Wake-on-LAN packet
|
||||||
pub struct WolPacket {
|
pub struct WolPacket {
|
||||||
|
@ -31,13 +32,7 @@ impl WolPacket {
|
||||||
/// let wol = wakey::WolPacket::from_bytes(&vec![0x00, 0x01, 0x02, 0x03, 0x04, 0x05]);
|
/// let wol = wakey::WolPacket::from_bytes(&vec![0x00, 0x01, 0x02, 0x03, 0x04, 0x05]);
|
||||||
/// ```
|
/// ```
|
||||||
pub fn from_bytes(mac: &[u8]) -> WolPacket {
|
pub fn from_bytes(mac: &[u8]) -> WolPacket {
|
||||||
static HEADER: [u8; 6] = [0xFF; 6];
|
WolPacket { packet: WolPacket::create_packet_bytes(mac) }
|
||||||
let mut packet = Vec::with_capacity(HEADER.len() + MAC_SIZE * MAC_PER_MAGIC);
|
|
||||||
|
|
||||||
packet.extend(HEADER.iter());
|
|
||||||
packet.extend(WolPacket::extend_mac(mac));
|
|
||||||
|
|
||||||
WolPacket { packet }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Creates WOL packet from string MAC representation (e.x. 00:01:02:03:04:05)
|
/// Creates WOL packet from string MAC representation (e.x. 00:01:02:03:04:05)
|
||||||
|
@ -101,6 +96,16 @@ impl WolPacket {
|
||||||
.cloned()
|
.cloned()
|
||||||
.collect()
|
.collect()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Creates bytes of the magic packet from MAC address
|
||||||
|
fn create_packet_bytes(mac: &[u8]) -> Vec<u8> {
|
||||||
|
let mut packet = Vec::with_capacity(HEADER.len() + MAC_SIZE * MAC_PER_MAGIC);
|
||||||
|
|
||||||
|
packet.extend(HEADER.iter());
|
||||||
|
packet.extend(WolPacket::extend_mac(mac));
|
||||||
|
|
||||||
|
packet
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
|
@ -136,4 +141,12 @@ mod tests {
|
||||||
let mac = "01002:03:04:05:06";
|
let mac = "01002:03:04:05:06";
|
||||||
super::WolPacket::mac_to_byte(mac, ':');
|
super::WolPacket::mac_to_byte(mac, ':');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn create_packet_bytes_test() {
|
||||||
|
let bytes = super::WolPacket::create_packet_bytes(&[0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF]);
|
||||||
|
|
||||||
|
assert_eq!(bytes.len(), super::MAC_SIZE * super::MAC_PER_MAGIC + super::HEADER.len());
|
||||||
|
assert!(bytes.iter().all(|&x| x == 0xFF));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user