Pārlūkot izejas kodu

new protocol works! :D

master
Isabelle L. pirms 5 gadiem
vecāks
revīzija
b358478b45
5 mainītis faili ar 68 papildinājumiem un 30 dzēšanām
  1. +39
    -1
      Cargo.lock
  2. +3
    -1
      Cargo.toml
  3. +9
    -9
      src/client.rs
  4. +1
    -2
      src/lib.rs
  5. +16
    -17
      src/server.rs

+ 39
- 1
Cargo.lock Parādīt failu

@@ -9,6 +9,12 @@ dependencies = [
"winapi 0.3.8",
]

[[package]]
name = "anyhow"
version = "1.0.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "85bb70cc08ec97ca5450e6eba421deeea5f172c0fc61f78b5357b2a8e8be195f"

[[package]]
name = "async-attributes"
version = "1.1.1"
@@ -122,6 +128,15 @@ dependencies = [
"vec_map",
]

[[package]]
name = "crc32fast"
version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ba125de2af0df55319f41944744ad91c71113bf74a4646efff39afe1f6842db1"
dependencies = [
"cfg-if",
]

[[package]]
name = "crossbeam-channel"
version = "0.4.2"
@@ -318,14 +333,16 @@ dependencies = [
[[package]]
name = "ilmp"
version = "0.1.0"
source = "git+https://github.com/izzabelle/ilmp#cb0257e9665b6fc9f0004c928ec043662ea275e0"
dependencies = [
"anyhow",
"chrono",
"crc32fast",
"futures",
"futures-util",
"ring",
"serde",
"serde_json",
"thiserror",
"uuid",
]

@@ -460,6 +477,7 @@ dependencies = [
name = "msg"
version = "0.1.0"
dependencies = [
"anyhow",
"async-std",
"chrono",
"futures",
@@ -786,6 +804,26 @@ dependencies = [
"unicode-width",
]

[[package]]
name = "thiserror"
version = "1.0.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5976891d6950b4f68477850b5b9e5aa64d955961466f9e174363f573e54e8ca7"
dependencies = [
"thiserror-impl",
]

[[package]]
name = "thiserror-impl"
version = "1.0.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ab81dbd1cd69cd2ce22ecfbdd3bdb73334ba25350649408cc6c085f46d89573d"
dependencies = [
"proc-macro2",
"quote",
"syn",
]

[[package]]
name = "time"
version = "0.1.43"


+ 3
- 1
Cargo.toml Parādīt failu

@@ -15,5 +15,7 @@ structopt = "0.3.14"
chrono = "0.4.11"
futures = "0.3.5"
toml = "0.5.6"
ilmp = { git = "https://github.com/izzabelle/ilmp" }
# ilmp = { git = "https://github.com/izzabelle/ilmp" }
ilmp = { path = "../ilmp"}
ring = "0.16.13"
anyhow = "1.0.31"

+ 9
- 9
src/client.rs Parādīt failu

@@ -2,19 +2,19 @@
use crate::config::ClientConfig as Config;
use crate::Result;
use async_std::net::TcpStream;
use futures_util::io::AsyncReadExt;

/// wraps the client
pub async fn client(port: u16) -> Result<()> {
let config = Config::load()?;
let _config = Config::load()?;

let stream = TcpStream::connect(format!("127.0.0.1:{}", &port)).await?;
println!(
"connection established to: {}:{}",
stream.peer_addr()?.ip(),
port
);
let (_read, mut write) = stream.split();
let mut stream = TcpStream::connect(format!("127.0.0.1:{}", &port)).await?;
println!("connection established to: {}:{}", stream.peer_addr()?.ip(), port);

/*let (_read, mut write) = stream.split();*/

let message =
ilmp::Message::new("Isabelle".to_string(), "new message protocol working".to_string());
ilmp::write(&mut stream, message).await?;

loop {}
}

+ 1
- 2
src/lib.rs Parādīt failu

@@ -8,5 +8,4 @@ pub use client::client;
pub use server::server;

// lazy idiot error/result type
pub type Error = std::io::Error;
pub type Result<T> = std::result::Result<T, Error>;
pub type Result<T> = anyhow::Result<T>;

+ 16
- 17
src/server.rs Parādīt failu

@@ -6,6 +6,7 @@ use async_std::{
};
use futures::io::{ReadHalf, WriteHalf};
use futures_util::{io::AsyncReadExt, stream::StreamExt};
use ilmp::Sendable;
use lazy_static::lazy_static;
use std::{collections::HashMap, sync::Mutex};
use uuid::Uuid;
@@ -18,11 +19,7 @@ lazy_static! {
/// wraps the server
pub async fn server(port: u16) -> Result<()> {
let listener = TcpListener::bind(format!("127.0.0.1:{}", &port)).await?;
println!(
"online as server at: {}:{}",
listener.local_addr()?.ip(),
port
);
println!("online as server at: {}:{}", listener.local_addr()?.ip(), port);
let mut incoming = listener.incoming();

while let Some(stream) = incoming.next().await {
@@ -34,26 +31,28 @@ pub async fn server(port: u16) -> Result<()> {
let (read, write) = stream.split();
let stream_id = Uuid::new_v4();

WRITE_STREAMS
.lock()
.expect("could not aqcuire lock")
.insert(stream_id.clone(), write);
WRITE_STREAMS.lock().expect("could not aqcuire lock").insert(stream_id.clone(), write);
task::spawn(handle_stream(read, stream_id));
}

Ok(())
}

async fn handle_stream(mut stream: ReadHalf<TcpStream>, stream_id: Uuid) -> Result<()> {
loop {}
println!("disconnecting");
async fn handle_stream(mut stream: ReadHalf<TcpStream>, _stream_id: Uuid) -> Result<()> {
loop {
let packet = ilmp::read(&mut stream).await?;
if let Some(packet) = packet {
let res = match packet.kind {
ilmp::PacketKind::Message => ilmp::Message::from_packet(packet),
};
println!("{:?}", res);
}
}
/* println!("disconnecting");

WRITE_STREAMS
.lock()
.expect("failed to aqcuire lock")
.remove(&stream_id);
WRITE_STREAMS.lock().expect("failed to aqcuire lock").remove(&stream_id);

Ok(())
Ok(())*/
}

/*async fn relay_packet<T: Clone + Sendable>(packet: T) -> Result<()> {


Notiek ielāde…
Atcelt
Saglabāt