diff --git a/Cargo.lock b/Cargo.lock index 986a095..77d2b1f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3,6 +3,8 @@ name = "a03" version = "0.1.0" dependencies = [ "rusqlite 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -48,6 +50,22 @@ name = "pkg-config" version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "proc-macro2" +version = "0.4.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "quote" +version = "0.6.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "redox_syscall" version = "0.1.40" @@ -74,6 +92,16 @@ name = "serde" version = "1.0.80" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "serde_derive" +version = "1.0.80" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.22 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "serde_json" version = "1.0.33" @@ -84,6 +112,16 @@ dependencies = [ "serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "syn" +version = "0.15.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "time" version = "0.1.40" @@ -94,6 +132,11 @@ dependencies = [ "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "unicode-xid" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "vcpkg" version = "0.2.6" @@ -126,12 +169,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum linked-hash-map 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7860ec297f7008ff7a1e3382d7f7e1dcd69efc94751a2284bafc3d013c2aa939" "checksum lru-cache 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4d06ff7ff06f729ce5f4e227876cb88d10bc59cd4ae1e09fbb2bde15c850dc21" "checksum pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "676e8eb2b1b4c9043511a9b7bea0915320d7e502b0a079fb03f9635a5252b18c" +"checksum proc-macro2 0.4.24 (registry+https://github.com/rust-lang/crates.io-index)" = "77619697826f31a02ae974457af0b29b723e5619e113e9397b8b82c6bd253f09" +"checksum quote 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "53fa22a1994bd0f9372d7a816207d8a2677ad0325b073f5c5332760f0fb62b5c" "checksum redox_syscall 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)" = "c214e91d3ecf43e9a4e41e578973adeb14b474f2bee858742d127af75a0112b1" "checksum rusqlite 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)" = "39bae767eb27866f5c0be918635ae54af705bc09db11be2c43a3c6b361cf3462" "checksum ryu 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "eb9e9b8cde282a9fe6a42dd4681319bfb63f121b8a8ee9439c6f4107e58a46f7" "checksum serde 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)" = "15c141fc7027dd265a47c090bf864cf62b42c4d228bbcf4e51a0c9e2b0d3f7ef" +"checksum serde_derive 1.0.80 (registry+https://github.com/rust-lang/crates.io-index)" = "225de307c6302bec3898c51ca302fc94a7a1697ef0845fcee6448f33c032249c" "checksum serde_json 1.0.33 (registry+https://github.com/rust-lang/crates.io-index)" = "c37ccd6be3ed1fdf419ee848f7c758eb31b054d7cd3ae3600e3bae0adf569811" +"checksum syn 0.15.22 (registry+https://github.com/rust-lang/crates.io-index)" = "ae8b29eb5210bc5cf63ed6149cbf9adfc82ac0be023d8735c176ee74a2db4da7" "checksum time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)" = "d825be0eb33fda1a7e68012d51e9c7f451dc1a69391e7fdc197060bb8c56667b" +"checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" "checksum vcpkg 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "def296d3eb3b12371b2c7d0e83bfe1403e4db2d7a0bba324a12b21c4ee13143d" "checksum winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "92c1eb33641e276cfa214a0522acad57be5c56b10cb348b3c5117db75f3ac4b0" "checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" diff --git a/Cargo.toml b/Cargo.toml index c4f71ac..6a7de88 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,4 +5,6 @@ authors = ["Joseph Ferano "] [dependencies] rusqlite = "0.15.0" +serde = "1.0" +serde_derive = "1.0" serde_json = "1.0" diff --git a/src/bin/data_node.rs b/src/bin/data_node.rs index 95e9372..f198f0d 100644 --- a/src/bin/data_node.rs +++ b/src/bin/data_node.rs @@ -1,5 +1,25 @@ extern crate a03; use a03::*; +extern crate serde; +extern crate serde_json; +#[macro_use] +extern crate serde_derive; -fn main() {} +use std::net::{TcpListener,TcpStream,Shutdown}; +use std::thread; +use std::io::Read; +use std::io::Write; + +fn main() { + let mut stream = TcpStream::connect("localhost:6770").unwrap(); + let writer = serde_json::to_writer( + &mut stream, + &TestObj { message : String::from("I can't think of something clever")}) + .unwrap(); + println!("Message sent!"); + stream.flush().unwrap(); +// stream.shutdown(Shutdown::Write); + let test_obj : TestObj = serde_json::from_reader(&mut stream).unwrap(); + println!("Received message back! {}", test_obj.message); +} diff --git a/src/bin/meta_data.rs b/src/bin/meta_data.rs index 67fe136..8f3ed1b 100644 --- a/src/bin/meta_data.rs +++ b/src/bin/meta_data.rs @@ -1,14 +1,32 @@ extern crate a03; extern crate rusqlite; -#[macro_use] +extern crate serde; extern crate serde_json; +#[macro_use] +extern crate serde_derive; -// use a03::*; + use a03::*; use rusqlite::types::ToSql; use rusqlite::{Connection, NO_PARAMS}; +use std::net::{TcpListener,TcpStream}; +use std::thread; +use std::io::Read; fn main() { - let conn = Connection::open("dfs.db").unwrap(); + let listener = TcpListener::bind("localhost:6770").unwrap(); + println!("Binding!"); + for stream in listener.incoming() { + let mut stream = stream.unwrap(); + println!("Got here!"); + let test_obj : TestObj = serde_json::from_reader(&mut stream).unwrap(); + match serde_json::to_writer( + &mut stream, + &TestObj { message : String::from("I got it dude") }) + { + Ok(_) => println!("{}", test_obj.message), + Err(e) => println!("{}", e), + }; + } } #[derive(Debug)] diff --git a/src/lib.rs b/src/lib.rs index c9931ff..cd06f73 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,2 +1,10 @@ -#[macro_use] +extern crate serde; extern crate serde_json; +#[macro_use] +extern crate serde_derive; + +#[derive(Serialize, Deserialize, Debug)] +pub struct TestObj { + pub message : String +} +