IPC (feature-gated) (#1654)

* moving ipc deriving to trait

* refactoring of the client

* all compiled

* proved all working

* warnings purged

* allow hypervisor to specify initialization payload in two ways

* using binary initialisation payload for sync

* some docs

* logger to separate crate

* log settings for sync bin

* forwarding logging arguments to the sync
This commit is contained in:
Nikolay Volf
2016-07-20 18:13:56 +02:00
committed by Arkadiy Paronyan
parent 7ae9e61d6c
commit 8ab56ea3d1
22 changed files with 439 additions and 88 deletions

View File

@@ -54,6 +54,7 @@ impl<T> BinaryConvertable for Option<T> where T: BinaryConvertable {
}
fn from_bytes(buffer: &[u8], length_stack: &mut VecDeque<usize>) -> Result<Self, BinaryConvertError> {
if buffer.len() == 0 { return Self::from_empty_bytes(); }
Ok(Some(try!(T::from_bytes(buffer, length_stack))))
}
@@ -779,6 +780,42 @@ fn serialize_into_deserialize_from() {
assert_eq!(v, de_v);
}
#[test]
fn serialize_vec_str() {
// empty
let source = Vec::<String>::new();
let serialized = serialize(&source).unwrap();
let deserialized = deserialize::<Vec<String>>(&serialized).unwrap();
assert_eq!(source, deserialized);
// with few values
let mut source = Vec::<String>::new();
source.push("val1".to_owned());
source.push("val2".to_owned());
let serialized = serialize(&source).unwrap();
let deserialized = deserialize::<Vec<String>>(&serialized).unwrap();
assert_eq!(source, deserialized);
}
#[test]
fn serialize_opt_str() {
// none
let source: Option<String> = None;
let serialized = serialize(&source).unwrap();
let deserialized = deserialize::<Option<String>>(&serialized).unwrap();
assert_eq!(source, deserialized);
// value
let source: Option<String> = Some("i have value".to_owned());
let serialized = serialize(&source).unwrap();
let deserialized = deserialize::<Option<String>>(&serialized).unwrap();
assert_eq!(source, deserialized);
}
#[test]
fn serialize_opt_vec() {
use std::io::Cursor;