trellis_testing/
host_status.rs1use trellis_core::{HostResourceStatus, ResourceKey, Revision, ScopeId, TransactionId};
2
3pub type HostStatusEvent = HostResourceStatus;
5
6#[derive(Clone, Debug, Eq, PartialEq)]
8pub struct HostStatusRecord {
9 pub status: HostStatusEvent,
11 pub class: HostStatusClass,
13 pub last_transaction_id: Option<TransactionId>,
15 pub last_command_revision: Option<Revision>,
17}
18
19#[derive(Copy, Clone, Debug, Eq, PartialEq)]
21pub enum HostStatusClass {
22 Current,
24 Duplicate,
26 Stale,
28 Future,
30 Late,
32}
33
34#[derive(Clone, Debug, Eq, PartialEq, Ord, PartialOrd)]
35pub(crate) struct HostStatusIdentity {
36 resource_key: ResourceKey,
37 scope: ScopeId,
38 command_revision: Revision,
39 status_revision: Revision,
40}
41
42impl From<&HostStatusEvent> for HostStatusIdentity {
43 fn from(status: &HostStatusEvent) -> Self {
44 Self {
45 resource_key: status.resource_key.clone(),
46 scope: status.scope,
47 command_revision: status.command_revision,
48 status_revision: status.status_revision,
49 }
50 }
51}