1use mkit::cbor::IntoCbor;
2
3use std::{fs, io::Write};
4
5use crate::{Error, Result};
6
7pub fn encode_cbor<T>(val: T) -> Result<Vec<u8>>
8where
9 T: IntoCbor,
10{
11 let mut data: Vec<u8> = vec![];
12 let n = val.into_cbor()?.encode(&mut data)?;
13 if n != data.len() {
14 err_at!(Fatal, msg: "cbor encoding len mistmatch {} {}", n, data.len())
15 } else {
16 Ok(data)
17 }
18}
19
20pub fn sync_write(file: &mut fs::File, data: &[u8]) -> Result<usize> {
21 let n = err_at!(IOError, file.write(data))?;
22 if n != data.len() {
23 err_at!(IOError, msg: "partial write to file {} {}", n, data.len())?
24 }
25 err_at!(IOError, file.sync_all())?;
26 Ok(n)
27}