fix formatting
This commit is contained in:
parent
c55182d6cc
commit
3c2984a404
|
@ -37,7 +37,7 @@ fn main() -> std::io::Result<()> {
|
|||
|
||||
match self::protocol::start_autoconnect_server_async(&network_conf) {
|
||||
Ok(_) => println!("Started Autoconnect Server"),
|
||||
Err(e) => println!("Starting Autoconnect Server failed: {:?}", e)
|
||||
Err(e) => println!("Starting Autoconnect Server failed: {:?}", e),
|
||||
}
|
||||
self::protocol::listen_forever(server_state, &network_conf)?;
|
||||
|
||||
|
|
|
@ -1,44 +1,55 @@
|
|||
use super::ProtocolConfig;
|
||||
|
||||
use std::thread;
|
||||
use std::net::UdpSocket;
|
||||
use std::io;
|
||||
use std::net::SocketAddr;
|
||||
use std::net::Ipv6Addr;
|
||||
use std::net::SocketAddr;
|
||||
use std::net::UdpSocket;
|
||||
use std::str::FromStr;
|
||||
use std::thread;
|
||||
|
||||
pub fn start_autoconnect_server_async(cfg : &ProtocolConfig) -> io::Result<()> {
|
||||
pub fn start_autoconnect_server_async(cfg: &ProtocolConfig) -> io::Result<()> {
|
||||
let cfg = cfg.clone();
|
||||
|
||||
let multi_sock = UdpSocket::bind((cfg.listen_addr.as_str(), cfg.port))?;
|
||||
|
||||
multi_sock.join_multicast_v6(
|
||||
&Ipv6Addr::from_str(&cfg.autoconnect_multicastv6_addr).map_err(|_| io::Error::new(io::ErrorKind::InvalidInput, "Configured IPv6 addr. is invalid."))?,
|
||||
0)?;
|
||||
&Ipv6Addr::from_str(&cfg.autoconnect_multicastv6_addr).map_err(|_| {
|
||||
io::Error::new(
|
||||
io::ErrorKind::InvalidInput,
|
||||
"Configured IPv6 addr. is invalid.",
|
||||
)
|
||||
})?,
|
||||
0,
|
||||
)?;
|
||||
|
||||
thread::spawn(move || {
|
||||
let mut buffer = vec![0u8; 8096];
|
||||
loop {
|
||||
match multi_sock.recv_from(&mut buffer) {
|
||||
Ok( (pkg_size, sender)) => {
|
||||
let _ = respond(&multi_sock, &buffer[0..pkg_size], &sender, &cfg);
|
||||
},
|
||||
Err( e ) => {
|
||||
match multi_sock.recv_from(&mut buffer) {
|
||||
Ok((pkg_size, sender)) => {
|
||||
let _ = respond(&multi_sock, &buffer[0..pkg_size], &sender, &cfg);
|
||||
}
|
||||
Err(e) => {
|
||||
println!("[Autoconnect] failed with : {:?}", e);
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn respond(sock : &UdpSocket, input : &[u8], sender : &SocketAddr, cfg : &ProtocolConfig) -> io::Result<()> {
|
||||
fn respond(
|
||||
sock: &UdpSocket,
|
||||
input: &[u8],
|
||||
sender: &SocketAddr,
|
||||
cfg: &ProtocolConfig,
|
||||
) -> io::Result<()> {
|
||||
if input == b"TextureSync" {
|
||||
sock.send_to(&u16::to_be_bytes(cfg.port), sender)?;
|
||||
println!("[Autoconnect] Got request from : {}", sender);
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
|
|
@ -56,7 +56,7 @@ pub struct ProtocolConfig {
|
|||
pub read_timeout_s: u64,
|
||||
pub write_timeout_s: u64,
|
||||
pub listen_addr: String,
|
||||
pub autoconnect_multicastv6_addr : String
|
||||
pub autoconnect_multicastv6_addr: String,
|
||||
}
|
||||
|
||||
impl ProtocolConfig {
|
||||
|
|
Loading…
Reference in New Issue