X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;ds=sidebyside;f=lightning%2Fsrc%2Futil%2Fser.rs;fp=lightning%2Fsrc%2Futil%2Fser.rs;h=7e4f789097940824a8ebfb3f1bb9f054cf3e145d;hb=edab29e8d834db2b2015b5aaff1c6ff3828ab048;hp=a2ef16b5e2462c51dd22f7c4444cd0cf7b22460a;hpb=71e69950869a538d9fe899fbbebe38da890ba007;p=rust-lightning diff --git a/lightning/src/util/ser.rs b/lightning/src/util/ser.rs index a2ef16b5..7e4f7890 100644 --- a/lightning/src/util/ser.rs +++ b/lightning/src/util/ser.rs @@ -5,6 +5,7 @@ use std::result::Result; use std::io::{Read, Write}; use std::collections::HashMap; use std::hash::Hash; +use std::sync::Mutex; use secp256k1::Signature; use secp256k1::key::{PublicKey, SecretKey}; @@ -442,3 +443,29 @@ impl Readable for OutPoint { }) } } + +impl> Readable for Mutex { + fn read(r: &mut R) -> Result { + let t: T = Readable::read(r)?; + Ok(Mutex::new(t)) + } +} +impl Writeable for Mutex { + fn write(&self, w: &mut W) -> Result<(), ::std::io::Error> { + self.lock().unwrap().write(w) + } +} + +impl, B: Readable> Readable for (A, B) { + fn read(r: &mut R) -> Result { + let a: A = Readable::read(r)?; + let b: B = Readable::read(r)?; + Ok((a, b)) + } +} +impl Writeable for (A, B) { + fn write(&self, w: &mut W) -> Result<(), ::std::io::Error> { + self.0.write(w)?; + self.1.write(w) + } +}