pub const DIFF_V1_PREFIX: &[u8] = b"diff-v1,";
pub const NEW_PREFIX: &[u8] = b"new,";
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum PreviewDataFrame<'a> {
DiffV1(&'a [u8]),
FullCurrent(&'a [u8]),
}
pub fn split_preview_data_frame(bytes: &[u8]) -> Option<PreviewDataFrame<'_>> {
if let Some(payload) = bytes.strip_prefix(DIFF_V1_PREFIX) {
Some(PreviewDataFrame::DiffV1(payload))
} else {
bytes
.strip_prefix(NEW_PREFIX)
.map(PreviewDataFrame::FullCurrent)
}
}
pub fn full_current_frame_from_delta(delta_frame: &[u8]) -> Option<Vec<u8>> {
let payload = delta_frame.strip_prefix(DIFF_V1_PREFIX)?;
Some([NEW_PREFIX, payload].concat())
}