use serde::{Deserialize, Serialize};
use crate::entry::Entry;
use crate::hash::ContentHash;
use crate::merge;
use crate::vv::VersionVector;
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct DiskState {
pub hash: Option<ContentHash>,
pub seen: VersionVector,
pub mtime_ns: i64,
pub len: u64,
pub checked_ns: i64,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct PathState {
pub versions: Vec<Entry>,
pub seen: VersionVector,
pub disk: DiskState,
}
impl PathState {
pub fn winner(&self) -> &Entry {
merge::winner(&self.versions)
}
}