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::connection::Connection;
use crate::data::Router as RouterData; 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::router::Router;
use crate::server::Server; use crate::server::Server;
use crate::settings::{Settings, INTERVAL}; use crate::settings::{Settings, INTERVAL};
...@@ -51,18 +51,14 @@ async fn main() -> anyhow::Result<()> { ...@@ -51,18 +51,14 @@ async fn main() -> anyhow::Result<()> {
result = socket.recv_from(&mut buf) => { result = socket.recv_from(&mut buf) => {
let (len, addr) = result?; 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 // 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 len = bincode::encode_into_slice(uplink, &mut buf, bincode::config::standard())?;
let _ = socket.send_to(&buf[..len], addr).await; 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() => { _ = timer.tick() => {
......
use bincode::{Decode, Encode}; use bincode::{Decode, Encode};
use std::collections::BTreeMap;
use serde_derive::Serialize; use serde_derive::Serialize;
use std::collections::BTreeMap;
#[derive(Encode, Decode)] #[derive(Encode, Decode)]
pub struct Hello { pub struct Hello {
......
use crate::protocol::{Downlink, MessageType, Uplink}; use crate::protocol::{Downlink, MessageType, Uplink};
use crate::settings::Settings; use crate::settings::Settings;
use crate::{connection::Connection, data}; 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::collections::BTreeMap;
use std::os::unix::io::{AsRawFd, FromRawFd}; 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