From 5cf0f7647751e99dc0ec90f2f4b207d5b066e75e Mon Sep 17 00:00:00 2001 From: Joscha Date: Mon, 7 Feb 2022 22:44:30 +0100 Subject: [PATCH] Print simple HelloCmd packet --- Cargo.lock | 85 +++++++++++++++++++++++++++++++++++++++++ cove-core/Cargo.toml | 1 + cove-core/src/lib.rs | 31 +++++++++++---- cove-server/Cargo.toml | 2 + cove-server/src/main.rs | 9 +++++ 5 files changed, 121 insertions(+), 7 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 92cf015..c3d6e2d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5,11 +5,96 @@ version = 3 [[package]] name = "cove-core" version = "0.1.0" +dependencies = [ + "serde", +] [[package]] name = "cove-server" version = "0.1.0" +dependencies = [ + "cove-core", + "serde_json", +] [[package]] name = "cove-tui" version = "0.1.0" + +[[package]] +name = "itoa" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35" + +[[package]] +name = "proc-macro2" +version = "1.0.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029" +dependencies = [ + "unicode-xid", +] + +[[package]] +name = "quote" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "864d3e96a899863136fc6e99f3d7cae289dafe43bf2c5ac19b70df7210c0a145" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "ryu" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f" + +[[package]] +name = "serde" +version = "1.0.136" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce31e24b01e1e524df96f1c2fdd054405f8d7376249a5110886fb4b658484789" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.136" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08597e7152fcd306f41838ed3e37be9eaeed2b61c42e2117266a554fab4662f9" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.78" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d23c1ba4cf0efd44be32017709280b32d1cea5c3f1275c3b6d9e8bc54f758085" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "syn" +version = "1.0.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a65b3f4ffa0092e9887669db0eae07941f023991ab58ea44da8fe8e2d511c6b" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + +[[package]] +name = "unicode-xid" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" diff --git a/cove-core/Cargo.toml b/cove-core/Cargo.toml index 9da6b42..eb7c057 100644 --- a/cove-core/Cargo.toml +++ b/cove-core/Cargo.toml @@ -4,3 +4,4 @@ version = "0.1.0" edition = "2021" [dependencies] +serde = { version = "1.0.136", features = ["derive"] } diff --git a/cove-core/src/lib.rs b/cove-core/src/lib.rs index 1b4a90c..0e59125 100644 --- a/cove-core/src/lib.rs +++ b/cove-core/src/lib.rs @@ -1,8 +1,25 @@ -#[cfg(test)] -mod tests { - #[test] - fn it_works() { - let result = 2 + 2; - assert_eq!(result, 4); - } +use serde::{Deserialize, Serialize}; + +#[derive(Debug, Deserialize, Serialize)] +pub struct HelloCmd { + pub name: String, +} + +#[derive(Debug, Deserialize, Serialize)] +pub struct HelloRpl { + pub msg: String, +} + +#[derive(Debug, Deserialize, Serialize)] +#[serde(tag = "type")] +pub enum Data { + HelloCmd(HelloCmd), + HelloRpl(HelloRpl), +} + +#[derive(Debug, Deserialize, Serialize)] +pub struct Packet { + pub id: u64, + #[serde(flatten)] + pub data: Data, } diff --git a/cove-server/Cargo.toml b/cove-server/Cargo.toml index d3e1c69..7adcfa1 100644 --- a/cove-server/Cargo.toml +++ b/cove-server/Cargo.toml @@ -4,3 +4,5 @@ version = "0.1.0" edition = "2021" [dependencies] +cove-core = { path = "../cove-core" } +serde_json = "1.0.78" diff --git a/cove-server/src/main.rs b/cove-server/src/main.rs index e7a11a9..f10fa8f 100644 --- a/cove-server/src/main.rs +++ b/cove-server/src/main.rs @@ -1,3 +1,12 @@ +use cove_core::{Data, HelloCmd, Packet}; + fn main() { println!("Hello, world!"); + let packet = Packet { + id: 1337, + data: Data::HelloCmd(HelloCmd { + name: "Garmy".to_string(), + }), + }; + println!("{}", serde_json::to_string(&packet).unwrap()); }