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.
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",

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
[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"] }

15
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<String>),
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;

Loading…
Cancel
Save