Browse Source

Try to serialize BigDecimal

master
Julio Biason 2 years ago
parent
commit
dd974518eb
  1. 49
      tokiounixsocket/Cargo.lock
  2. 1
      tokiounixsocket/Cargo.toml
  3. 15
      tokiounixsocket/src/main.rs

49
tokiounixsocket/Cargo.lock generated

@ -2,6 +2,24 @@
# It is not intended for manual editing. # It is not intended for manual editing.
version = 3 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]] [[package]]
name = "bincode" name = "bincode"
version = "1.3.3" version = "1.3.3"
@ -75,6 +93,36 @@ dependencies = [
"winapi", "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]] [[package]]
name = "pin-project-lite" name = "pin-project-lite"
version = "0.2.8" version = "0.2.8"
@ -171,6 +219,7 @@ dependencies = [
name = "tokiounixsocket" name = "tokiounixsocket"
version = "0.1.0" version = "0.1.0"
dependencies = [ dependencies = [
"bigdecimal",
"bincode", "bincode",
"serde", "serde",
"tokio", "tokio",

1
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 # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies] [dependencies]
bigdecimal = { version = "0.3.0", features = ["serde"] }
bincode = "1.3.3" bincode = "1.3.3"
serde = { version = "1.0.136", features = ["derive"] } serde = { version = "1.0.136", features = ["derive"] }
tokio = { version = "1.17.0", features = ["rt", "sync", "net", "macros", "io-util"] } tokio = { version = "1.17.0", features = ["rt", "sync", "net", "macros", "io-util"] }

15
tokiounixsocket/src/main.rs

@ -1,6 +1,8 @@
use std::io; use std::io;
use std::path::Path; use std::path::Path;
use std::str::FromStr;
use bigdecimal::BigDecimal;
use tokio::io::AsyncReadExt; use tokio::io::AsyncReadExt;
use tokio::io::AsyncWriteExt; use tokio::io::AsyncWriteExt;
use tokio::io::Interest; use tokio::io::Interest;
@ -10,7 +12,9 @@ use tokio::net::UnixStream;
#[derive(Debug, serde::Serialize, serde::Deserialize)] #[derive(Debug, serde::Serialize, serde::Deserialize)]
enum Message { enum Message {
First(i64, String), First(i64, String),
Second(i64, String), Second(i64, Option<String>),
Third(i64),
Fourth(BigDecimal),
} }
#[tokio::main(flavor = "current_thread")] #[tokio::main(flavor = "current_thread")]
@ -84,10 +88,11 @@ async fn send_to_consumer(stream: &mut UnixStream) {
let mut should_yield = false; let mut should_yield = false;
let mut seq = 0; let mut seq = 0;
loop { loop {
let message = if should_yield { let message = match seq % 5 {
Message::First(seq, format!("{} first", seq)) 0 => Message::First(seq, format!("{} first", seq)),
} else { 1 => Message::Second(seq, Some(format!("{} second", seq))),
Message::Second(seq, format!("{} second", seq)) 2 => Message::Third(seq),
_ => Message::Fourth(BigDecimal::from_str(&format!("{}", seq)).unwrap()),
}; };
seq += 1; seq += 1;

Loading…
Cancel
Save