diff --git a/tokiounixsocket/Cargo.lock b/tokiounixsocket/Cargo.lock index f81efe0..e3c4a72 100644 --- a/tokiounixsocket/Cargo.lock +++ b/tokiounixsocket/Cargo.lock @@ -2,6 +2,24 @@ # It is not intended for manual editing. version = 3 +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "bigdecimal" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6aaf33151a6429fe9211d1b276eafdf70cdff28b071e76c0b0e1503221ea3744" +dependencies = [ + "num-bigint", + "num-integer", + "num-traits", + "serde", +] + [[package]] name = "bincode" version = "1.3.3" @@ -75,6 +93,36 @@ dependencies = [ "winapi", ] +[[package]] +name = "num-bigint" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-integer" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" +dependencies = [ + "autocfg", +] + [[package]] name = "pin-project-lite" version = "0.2.8" @@ -171,6 +219,7 @@ dependencies = [ name = "tokiounixsocket" version = "0.1.0" dependencies = [ + "bigdecimal", "bincode", "serde", "tokio", diff --git a/tokiounixsocket/Cargo.toml b/tokiounixsocket/Cargo.toml index 9df71b0..d7f696f 100644 --- a/tokiounixsocket/Cargo.toml +++ b/tokiounixsocket/Cargo.toml @@ -6,6 +6,7 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] +bigdecimal = { version = "0.3.0", features = ["serde"] } bincode = "1.3.3" serde = { version = "1.0.136", features = ["derive"] } tokio = { version = "1.17.0", features = ["rt", "sync", "net", "macros", "io-util"] } diff --git a/tokiounixsocket/src/main.rs b/tokiounixsocket/src/main.rs index 03afa63..992cf7c 100644 --- a/tokiounixsocket/src/main.rs +++ b/tokiounixsocket/src/main.rs @@ -1,6 +1,8 @@ use std::io; use std::path::Path; +use std::str::FromStr; +use bigdecimal::BigDecimal; use tokio::io::AsyncReadExt; use tokio::io::AsyncWriteExt; use tokio::io::Interest; @@ -10,7 +12,9 @@ use tokio::net::UnixStream; #[derive(Debug, serde::Serialize, serde::Deserialize)] enum Message { First(i64, String), - Second(i64, String), + Second(i64, Option), + Third(i64), + Fourth(BigDecimal), } #[tokio::main(flavor = "current_thread")] @@ -84,10 +88,11 @@ async fn send_to_consumer(stream: &mut UnixStream) { let mut should_yield = false; let mut seq = 0; loop { - let message = if should_yield { - Message::First(seq, format!("{} first", seq)) - } else { - Message::Second(seq, format!("{} second", seq)) + let message = match seq % 5 { + 0 => Message::First(seq, format!("{} first", seq)), + 1 => Message::Second(seq, Some(format!("{} second", seq))), + 2 => Message::Third(seq), + _ => Message::Fourth(BigDecimal::from_str(&format!("{}", seq)).unwrap()), }; seq += 1;