Skip to content

Commit

Permalink
fix
Browse files Browse the repository at this point in the history
  • Loading branch information
lyrise committed Mar 2, 2024
1 parent 0aacf63 commit 2697476
Show file tree
Hide file tree
Showing 19 changed files with 108 additions and 28 deletions.
20 changes: 12 additions & 8 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
{
"rust-analyzer.showUnlinkedFileNotification": false,
"cSpell.words": [
"bitflags",
"hasher",
"Kadex",
"omni",
"Upnp"
]
"rust-analyzer.showUnlinkedFileNotification": false,
"cSpell.words": [
"addrs",
"bitflags",
"Cbor",
"hasher",
"Kadex",
"kadx",
"omni",
"reqwest",
"Upnp"
]
}
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions modules/engine/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ sha3 = { workspace = true }
ciborium = { workspace = true }
bitflags = { workspace = true }
tempfile = { workspace = true }
reqwest = { workspace = true }

[dev-dependencies]
testcontainers = { workspace = true }
Expand Down
2 changes: 2 additions & 0 deletions modules/engine/src/model.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
mod node_profile;
mod omni_address;
mod omni_signature;

pub use node_profile::*;
pub use omni_address::*;
pub use omni_signature::*;
10 changes: 10 additions & 0 deletions modules/engine/src/model/node_profile.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct NodeProfile {
addrs: Vec<String>,
}

impl fmt::Display for NodeProfile {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{}", self.addrs.join(", "))
}
}
3 changes: 2 additions & 1 deletion modules/engine/src/service.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
pub mod connection;
pub mod dht;
pub mod exchange;
pub mod session;
pub mod storage;
pub mod util;
18 changes: 8 additions & 10 deletions modules/engine/src/service/connection/stream.rs
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
use async_trait::async_trait;
use futures_util::SinkExt;
use serde::{Deserialize, Serialize};
use serde::{de::DeserializeOwned, Deserialize, Serialize};
use tokio::io::{AsyncRead, AsyncWrite};
use tokio_stream::StreamExt;
use tokio_util::{
bytes::{Buf, BufMut, Bytes, BytesMut},
codec::{Framed, LengthDelimitedCodec},
};

use crate::service::util::Cbor;

#[async_trait]
pub trait AsyncSendRecv {
async fn send(&mut self, buffer: Bytes) -> anyhow::Result<()>;
Expand Down Expand Up @@ -59,18 +61,14 @@ where
T: ?Sized + Send + Sync + Unpin,
{
async fn send_message<TItem: Serialize + Send>(&mut self, item: TItem) -> anyhow::Result<()> {
let buffer = BytesMut::new();
let mut writer = buffer.writer();
ciborium::ser::into_writer(&item, &mut writer)?;
let buffer = writer.into_inner().freeze();
self.send(buffer).await?;
let b = Cbor::serialize(item)?;
self.send(b).await?;
Ok(())
}

async fn recv_message<TItem: for<'a> Deserialize<'a>>(&mut self) -> anyhow::Result<TItem> {
let buffer = self.recv().await?;
let mut reader = buffer.reader();
let item: TItem = ciborium::de::from_reader(&mut reader)?;
async fn recv_message<TItem: DeserializeOwned>(&mut self) -> anyhow::Result<TItem> {
let b = self.recv().await?;
let item = Cbor::deserialize(b)?;
Ok(item)
}
}
4 changes: 1 addition & 3 deletions modules/engine/src/service/connection/tcp.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,7 @@ pub use upnp_client::*;

#[cfg(test)]
mod tests {
use crate::service::connection::{AsyncSendRecv, AsyncSendRecvExt};

use super::*;
use crate::service::connection::{AsyncSendRecv, AsyncSendRecvExt, ConnectionTcpAccepter, ConnectionTcpConnector, TcpProxyOption};

#[tokio::test]
#[ignore]
Expand Down
3 changes: 0 additions & 3 deletions modules/engine/src/service/dht.rs

This file was deleted.

7 changes: 7 additions & 0 deletions modules/engine/src/service/exchange.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
mod file;
mod message;
mod node;

pub use file::*;
pub use message::*;
pub use node::*;
Empty file.
Empty file.
5 changes: 5 additions & 0 deletions modules/engine/src/service/exchange/node.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
mod initial_node_fetcher;
mod node_exchanger;

pub use initial_node_fetcher::*;
pub use node_exchanger::*;
23 changes: 23 additions & 0 deletions modules/engine/src/service/exchange/node/initial_node_fetcher.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
use crate::model::NodeProfile;
use reqwest;

pub struct InitialNodeFetcher {
urls: Vec<String>,
}

impl InitialNodeFetcher {
pub fn new(urls: [&str]) {
Self { urls: urls.to_vec() }
}

pub async fn fetch(&self) -> Vec<NodeProfile> {
let client = reqwest::Client::new();

for u in self.urls {
let res = client.get(u).send().await?;
let res = res.text().await?;

for line in res.split_whitespace() {}
}
}
}
7 changes: 7 additions & 0 deletions modules/engine/src/service/exchange/node/node_exchanger.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
pub struct NodeExchanger;

impl NodeExchanger {
pub async fn new() -> Self {
Self {}
}
}
7 changes: 4 additions & 3 deletions modules/engine/src/service/session.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,12 @@ mod tests {

use crate::{
model::{OmniAddress, OmniSignType, OmniSigner},
service::connection::{AsyncSendRecvExt, ConnectionTcpAccepter, ConnectionTcpConnector, TcpProxyOption, TcpProxyType},
service::{
connection::{AsyncSendRecvExt, ConnectionTcpAccepter, ConnectionTcpConnector, TcpProxyOption, TcpProxyType},
session::{SessionAccepter, SessionConnector},
},
};

use super::*;

#[tokio::test]
#[ignore]
async fn simple_test() {
Expand Down
5 changes: 5 additions & 0 deletions modules/engine/src/service/util.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
mod cbor;
mod kadx;

pub use cbor::*;
pub use kadx::*;
20 changes: 20 additions & 0 deletions modules/engine/src/service/util/cbor.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
use serde::{de::DeserializeOwned, Serialize};
use tokio_util::bytes::{Buf, BufMut, Bytes, BytesMut};

pub struct Cbor;

impl Cbor {
pub fn serialize<T: Serialize>(item: T) -> anyhow::Result<Bytes> {
let buffer = BytesMut::new();
let mut writer = buffer.writer();
ciborium::ser::into_writer(&item, &mut writer)?;
let buffer = writer.into_inner().freeze();
Ok(buffer)
}

pub fn deserialize<T: DeserializeOwned>(b: Bytes) -> anyhow::Result<T> {
let mut reader = b.reader();
let item = ciborium::de::from_reader(&mut reader)?;
Ok(item)
}
}
File renamed without changes.

0 comments on commit 2697476

Please sign in to comment.