1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
pub extern crate grpcio; extern crate self as bincode_grpc; pub extern crate tracing; pub mod bi_codec { use grpcio::MessageReader; use grpcio::Result; use serde::de::DeserializeOwned; use serde::Serialize; use std::io::{BufReader, Read}; pub fn ser<M: Serialize>(msg: &M, buf: &mut Vec<u8>) { let serialized = bincode::serialize(msg).expect("serialize message failed"); assert_eq!(std::mem::replace(buf, serialized).len(), 0); } pub fn de<M: DeserializeOwned>(mut reader: MessageReader) -> Result<M> { let mut buf = Vec::with_capacity(reader.len()); reader.read_to_end(&mut buf).expect("Reading message from buffer failed"); Ok(bincode::deserialize(&mut buf).expect("Deserializing message from buffer failed")) } } pub use bincode_grpc_macro::{server, service};