use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
#[non_exhaustive]
pub enum WaitCondition {
Timeout {
resume_at_ms: u64,
},
Event {
#[serde(with = "crate::wire::u128_bytes")]
event_id: u128,
},
All(Vec<WaitCondition>),
Any(Vec<WaitCondition>),
Custom {
tag: u16,
data: Vec<u8>,
},
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
#[non_exhaustive]
pub enum CompensationAction {
Rollback {
#[serde(with = "crate::wire::vec_u128_bytes")]
event_ids: Vec<u128>,
},
Notify {
#[serde(with = "crate::wire::u128_bytes")]
target_id: u128,
message: String,
},
Release {
#[serde(with = "crate::wire::vec_u128_bytes")]
resource_ids: Vec<u128>,
},
Custom {
action_type: String,
data: Vec<u8>,
},
}