Commit 9429ae13 authored by nanamicat's avatar nanamicat

clean

parent 80c57c1d
Pipeline #42415 passed with stages
in 5 minutes and 6 seconds
use crate::connection::Connection;
use crate::data::Router as RouterData;
use crate::protocol::{Downlink, Hello, MessageType, Uplink};
use crate::protocol::{Hello, MessageType, Uplink};
use crate::router::Router;
use crate::server::Server;
use crate::settings::{Settings, INTERVAL};
......@@ -51,18 +51,14 @@ async fn main() -> anyhow::Result<()> {
result = socket.recv_from(&mut buf) => {
let (len, addr) = result?;
if addr == server_addr {
if let Some(peer) = Router::get(&mut routers, addr) && let Ok((message, _)) = bincode::decode_from_slice(&buf[..len], bincode::config::standard()) {
// from client
peer.on_message(&message);
} else if addr == server_addr && let Ok((downlink, _)) = bincode::decode_from_slice(&buf[..len], bincode::config::standard()) && let Some(uplink) = server.on_message(&downlink, &routers_data, &connections[&config.id], &config).await {
// from server
let (downlink, _): (Downlink, usize) = bincode::decode_from_slice(&buf[..len], bincode::config::standard())?;
if let Some(uplink)= server.on_message(&downlink, &routers_data, &connections[&config.id], &config).await {
let len = bincode::encode_into_slice(uplink, &mut buf, bincode::config::standard())?;
let _ = socket.send_to(&buf[..len], addr).await;
}
} else if let Some(peer) = Router::get(&mut routers, addr){
// from client
let (message, _): (Hello, usize) = bincode::decode_from_slice(&buf[..len], bincode::config::standard())?;
peer.on_message(&message);
}
}
_ = timer.tick() => {
......
use bincode::{Decode, Encode};
use std::collections::BTreeMap;
use serde_derive::Serialize;
use std::collections::BTreeMap;
#[derive(Encode, Decode)]
pub struct Hello {
......
use crate::protocol::{Downlink, MessageType, Uplink};
use crate::settings::Settings;
use crate::{connection::Connection, data};
use netlink_sys::{protocols::NETLINK_ROUTE, Socket, TokioSocket};
use netlink_sys::{Socket, TokioSocket, protocols::NETLINK_ROUTE};
use std::collections::BTreeMap;
use std::os::unix::io::{AsRawFd, FromRawFd};
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment