fix formatting
This commit is contained in:
		@ -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 {
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user