better structuring
This commit is contained in:
parent
b33fe3ccaf
commit
a2a492dd74
|
@ -1,10 +1,18 @@
|
||||||
|
|
||||||
use semserialize::SemLine;
|
|
||||||
use serde::{Serialize, Deserialize};
|
use serde::{Serialize, Deserialize};
|
||||||
use postcard::{from_bytes};
|
use postcard::{from_bytes};
|
||||||
|
|
||||||
use argh::FromArgs;
|
use argh::FromArgs;
|
||||||
use std::net;
|
use tokio::sync::mpsc;
|
||||||
|
use std::error::Error;
|
||||||
|
use std::{env, io};
|
||||||
|
use tokio::net::UdpSocket;
|
||||||
|
use tokio::sync::mpsc::channel;
|
||||||
|
use crate::receiver::Receiver;
|
||||||
|
|
||||||
|
mod renderer;
|
||||||
|
mod receiver;
|
||||||
|
|
||||||
#[derive(FromArgs)]
|
#[derive(FromArgs)]
|
||||||
///Config options for the client
|
///Config options for the client
|
||||||
struct Config {
|
struct Config {
|
||||||
|
@ -15,10 +23,21 @@ ip: String,
|
||||||
#[argh(option, default = "2137",short='p')]
|
#[argh(option, default = "2137",short='p')]
|
||||||
udpport: usize,
|
udpport: usize,
|
||||||
}
|
}
|
||||||
fn main() {
|
|
||||||
|
|
||||||
|
|
||||||
|
#[tokio::main]
|
||||||
|
async fn main() -> Result<(), Box<dyn Error>>{
|
||||||
let config:Config = argh::from_env();
|
let config:Config = argh::from_env();
|
||||||
println!("UDP listener Port is {}",config.udpport);
|
println!("UDP listener Port is {}",config.udpport);
|
||||||
let socket_addr:std::net::SocketAddr = format!("{}:{}",config.ip,config.udpport).parse::<std::net::SocketAddr>().unwrap_or("0.0.0.0:2137".parse::<std::net::SocketAddr>().unwrap());
|
let socket_addr:std::net::SocketAddr = format!("{}:{}",config.ip,config.udpport).parse::<std::net::SocketAddr>().unwrap_or("0.0.0.0:2137".parse::<std::net::SocketAddr>().unwrap());
|
||||||
let udpsocket = std::net::UdpSocket::bind(socket_addr).expect("couldn't bind to address");
|
let udp_socket = UdpSocket::bind(socket_addr).await.expect("couldn't bind to address");
|
||||||
|
let (sender,rcv) = channel(5);
|
||||||
|
|
||||||
|
let receiver = Receiver{socket:udp_socket,sender};
|
||||||
|
receiver.run().await?;
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
27
beamer/client/src/receiver.rs
Normal file
27
beamer/client/src/receiver.rs
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
use tokio::net::UdpSocket;
|
||||||
|
use tokio::sync::mpsc::channel;
|
||||||
|
use semserialize::SemLine;
|
||||||
|
use std::{env, io};
|
||||||
|
|
||||||
|
|
||||||
|
pub struct Receiver {
|
||||||
|
pub socket: UdpSocket,
|
||||||
|
pub sender: tokio::sync::mpsc::Sender<SemLine>
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
impl Receiver{
|
||||||
|
pub async fn run(self) -> Result<(), io::Error>{
|
||||||
|
//its fine to allocate on the heap
|
||||||
|
let mut buf: Vec<u8> = vec![0;6535];
|
||||||
|
loop{
|
||||||
|
let read = self.socket.recv(&mut buf).await.expect("Reading from buffer failed");
|
||||||
|
let msg:SemLine = postcard::from_bytes(&buf).expect("failed to decode bytes!");
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return Ok(())
|
||||||
|
}
|
||||||
|
}
|
7
beamer/client/src/renderer.rs
Normal file
7
beamer/client/src/renderer.rs
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
|
||||||
|
use tokio::sync::mpsc::Receiver;
|
||||||
|
use semserialize::SemLine;
|
||||||
|
|
||||||
|
struct Drawer{
|
||||||
|
channel: Receiver<SemLine>
|
||||||
|
}
|
Loading…
Reference in a new issue