fn read(reader: &mut R) -> Result<Self, DecodeError>;
}
+/// A trait that various higher-level rust-lightning types implement allowing them to be read in
+/// from a Read given some additional set of arguments which is required to deserialize.
+pub trait ReadableArgs<R, P>
+ where Self: Sized,
+ R: Read
+{
+ /// Reads a Self in from the given Read
+ fn read(reader: &mut R, params: P) -> Result<Self, DecodeError>;
+}
+
macro_rules! impl_writeable_primitive {
($val_type:ty, $meth_write:ident, $len: expr, $meth_read:ident) => {
impl Writeable for $val_type {
let buf: [u8; 33] = Readable::read(r)?;
match PublicKey::from_slice(&Secp256k1::without_caps(), &buf) {
Ok(key) => Ok(key),
- Err(_) => return Err(DecodeError::BadPublicKey),
+ Err(_) => return Err(DecodeError::InvalidValue),
}
}
}
let buf: [u8; 64] = Readable::read(r)?;
match Signature::from_compact(&Secp256k1::without_caps(), &buf) {
Ok(sig) => Ok(sig),
- Err(_) => return Err(DecodeError::BadSignature),
+ Err(_) => return Err(DecodeError::InvalidValue),
}
}
}