targets.rs (2562B)
1 //! Bounded projection of the original destinations, never transport authority. 2 3 use tera_core::runtime::product_surface::{PublicationTargetDetails, PublicationTargetPolicy}; 4 5 #[derive(Clone, Debug, Eq, PartialEq, uniffi::Enum)] 6 pub enum FfiPublicationTargetPolicy { 7 Any, 8 All, 9 Quorum { threshold: u16 }, 10 Required { fingerprints: Vec<String> }, 11 } 12 13 #[derive(Clone, Debug, Eq, PartialEq, uniffi::Record)] 14 pub struct FfiPublicationTargetEvidence { 15 pub fingerprint: String, 16 pub endpoint: String, 17 pub attempted: bool, 18 pub accepted: bool, 19 pub delivered: bool, 20 pub rejected: bool, 21 pub uncertain: bool, 22 pub read_back_observed_at_unix_ms: Option<u64>, 23 } 24 25 #[derive(Clone, Debug, Eq, PartialEq, uniffi::Record)] 26 pub struct FfiPublicationTargetDetails { 27 pub requires_delivery: bool, 28 pub policy: FfiPublicationTargetPolicy, 29 pub targets: Vec<FfiPublicationTargetEvidence>, 30 pub read_back_available: bool, 31 pub read_back_complete: bool, 32 } 33 34 impl From<&PublicationTargetDetails> for FfiPublicationTargetDetails { 35 fn from(value: &PublicationTargetDetails) -> Self { 36 Self { 37 requires_delivery: value.requires_delivery, 38 policy: match &value.policy { 39 PublicationTargetPolicy::Any => FfiPublicationTargetPolicy::Any, 40 PublicationTargetPolicy::All => FfiPublicationTargetPolicy::All, 41 PublicationTargetPolicy::Quorum(threshold) => FfiPublicationTargetPolicy::Quorum { 42 threshold: *threshold, 43 }, 44 PublicationTargetPolicy::Required(fingerprints) => { 45 FfiPublicationTargetPolicy::Required { 46 fingerprints: fingerprints.clone(), 47 } 48 } 49 }, 50 targets: value 51 .targets 52 .iter() 53 .map(|target| FfiPublicationTargetEvidence { 54 fingerprint: target.fingerprint.clone(), 55 endpoint: target.endpoint.clone(), 56 attempted: target.attempted, 57 accepted: target.accepted, 58 delivered: target.delivered, 59 rejected: target.rejected, 60 uncertain: target.uncertain, 61 read_back_observed_at_unix_ms: target.read_back_observed_at_unix_ms, 62 }) 63 .collect(), 64 read_back_available: value.read_back_available, 65 read_back_complete: value.read_back_complete, 66 } 67 } 68 }