1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
use xdr_codec::{Pack, Write, Result}; use ::time_bounds::{UnixTimestamp, TimeBounds}; use ::xdr::ToXdr; fn time_bound_as_int(t: &Option<UnixTimestamp>) -> i64 { match *t { None => 0, Some(n) => n.clone(), } } impl<W: Write> Pack<W> for TimeBounds { fn pack(&self, out: &mut W) -> Result<usize> { let lower = time_bound_as_int(self.lower()); let upper = time_bound_as_int(self.upper()); Ok(lower.pack(out)? + upper.pack(out)?) } } impl ToXdr for TimeBounds { fn to_writer<W: Write>(&self, mut buf: W) -> ::error::Result<usize> { let r = self.pack(&mut buf)?; Ok(r) } }