use crate::refs::OpaqueRef;
use crate::types::WaitEvent;
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct DeliveryEvidence {
delivery_ref: OpaqueRef,
}
impl DeliveryEvidence {
pub fn new(delivery_ref: impl Into<String>) -> Self {
Self {
delivery_ref: OpaqueRef::new(delivery_ref),
}
}
pub fn delivery_ref(&self) -> &OpaqueRef {
&self.delivery_ref
}
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct ActivationEvidence {
activation_ref: OpaqueRef,
}
impl ActivationEvidence {
pub fn new(activation_ref: impl Into<String>) -> Self {
Self {
activation_ref: OpaqueRef::new(activation_ref),
}
}
pub fn activation_ref(&self) -> &OpaqueRef {
&self.activation_ref
}
}
pub fn attach_event_refs(
events: &mut [WaitEvent],
delivery_ref: Option<OpaqueRef>,
activation_ref: Option<OpaqueRef>,
) {
for event in events {
event.attach_refs(delivery_ref.clone(), activation_ref.clone());
}
}
#[cfg(test)]
mod tests {
use crate::types::MessageType;
#[test]
fn evidence_is_not_a_wait_message_kind() {
let names = [
MessageType::RegistrationSet.as_str(),
MessageType::LiveWaitRequest.as_str(),
MessageType::LiveWaitOutcome.as_str(),
MessageType::PollCycleRequest.as_str(),
MessageType::PollCycleOutcome.as_str(),
MessageType::PollCycleAck.as_str(),
];
assert!(!names.contains(&"delivery"));
assert!(!names.contains(&"activation"));
assert!(!names.contains(&"delivery_receipt"));
assert!(!names.contains(&"activation_receipt"));
}
}