Converted to async
This commit is contained in:
parent
289d4437f9
commit
a982950203
|
@ -15,3 +15,4 @@ categories = ["network-programming"]
|
||||||
[dependencies]
|
[dependencies]
|
||||||
hex = "~0.4"
|
hex = "~0.4"
|
||||||
arrayvec = "0.7.2"
|
arrayvec = "0.7.2"
|
||||||
|
tokio = { version = "1.30.0", features = ["net"] }
|
||||||
|
|
|
@ -10,10 +10,11 @@
|
||||||
//! ```
|
//! ```
|
||||||
|
|
||||||
use std::error::Error;
|
use std::error::Error;
|
||||||
use std::net::{SocketAddr, ToSocketAddrs, UdpSocket};
|
use std::net::SocketAddr;
|
||||||
use std::{fmt, iter};
|
use std::{fmt, iter};
|
||||||
|
|
||||||
use arrayvec::ArrayVec;
|
use arrayvec::ArrayVec;
|
||||||
|
use tokio::net::{ToSocketAddrs, UdpSocket};
|
||||||
|
|
||||||
const MAC_SIZE: usize = 6;
|
const MAC_SIZE: usize = 6;
|
||||||
const MAC_PER_MAGIC: usize = 16;
|
const MAC_PER_MAGIC: usize = 16;
|
||||||
|
@ -95,11 +96,12 @@ impl WolPacket {
|
||||||
/// let wol = wakey::WolPacket::from_bytes(&vec![0x00, 0x01, 0x02, 0x03, 0x04, 0x05]).unwrap();
|
/// let wol = wakey::WolPacket::from_bytes(&vec![0x00, 0x01, 0x02, 0x03, 0x04, 0x05]).unwrap();
|
||||||
/// wol.send_magic();
|
/// wol.send_magic();
|
||||||
/// ```
|
/// ```
|
||||||
pub fn send_magic(&self) -> Result<()> {
|
pub async fn send_magic(&self) -> Result<()> {
|
||||||
self.send_magic_to(
|
self.send_magic_to(
|
||||||
SocketAddr::from(([0, 0, 0, 0], 0)),
|
SocketAddr::from(([0, 0, 0, 0], 0)),
|
||||||
SocketAddr::from(([255, 255, 255, 255], 9)),
|
SocketAddr::from(([255, 255, 255, 255], 9)),
|
||||||
)
|
)
|
||||||
|
.await
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Broadcasts the magic packet from / to specified address.
|
/// Broadcasts the magic packet from / to specified address.
|
||||||
|
@ -111,10 +113,10 @@ impl WolPacket {
|
||||||
/// let dst = SocketAddr::from(([255,255,255,255], 9));
|
/// let dst = SocketAddr::from(([255,255,255,255], 9));
|
||||||
/// wol.send_magic_to(src, dst);
|
/// wol.send_magic_to(src, dst);
|
||||||
/// ```
|
/// ```
|
||||||
pub fn send_magic_to<A: ToSocketAddrs>(&self, src: A, dst: A) -> Result<()> {
|
pub async fn send_magic_to<A: ToSocketAddrs>(&self, src: A, dst: A) -> Result<()> {
|
||||||
let udp_sock = UdpSocket::bind(src)?;
|
let udp_sock = UdpSocket::bind(src).await?;
|
||||||
udp_sock.set_broadcast(true)?;
|
udp_sock.set_broadcast(true)?;
|
||||||
udp_sock.send_to(&self.packet, dst)?;
|
udp_sock.send_to(&self.packet, dst).await?;
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user