use super::*;
impl<N: Network> ToBytes for FinalizeType<N> {
fn write_le<W: Write>(&self, mut writer: W) -> IoResult<()> {
u8::try_from(self.enum_index()).or_halt_with::<N>("Invalid finalize type variant").write_le(&mut writer)?;
match self {
Self::Public(plaintext_type) => plaintext_type.write_le(&mut writer),
Self::Record(identifier) => identifier.write_le(&mut writer),
Self::ExternalRecord(locator) => locator.write_le(&mut writer),
}
}
}
impl<N: Network> FromBytes for FinalizeType<N> {
fn read_le<R: Read>(mut reader: R) -> IoResult<Self> {
let variant = u8::read_le(&mut reader)?;
match variant {
0 => Ok(Self::Public(PlaintextType::read_le(&mut reader)?)),
1 => Ok(Self::Record(Identifier::read_le(&mut reader)?)),
2 => Ok(Self::ExternalRecord(Locator::read_le(&mut reader)?)),
3.. => Err(error(format!("Failed to deserialize finalize type variant {}", variant))),
}
}
}