use serde::de::DeserializeOwned;
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum ExternalEventResult {
Received(Option<String>),
TimedOut,
}
impl ExternalEventResult {
pub fn is_received(&self) -> bool {
matches!(self, Self::Received(_))
}
pub fn is_timed_out(&self) -> bool {
matches!(self, Self::TimedOut)
}
pub fn deserialize<T: DeserializeOwned>(&self) -> Option<super::Result<T>> {
match self {
Self::Received(Some(json)) => {
Some(serde_json::from_str(json).map_err(super::DurableTaskError::Serialization))
}
_ => None,
}
}
}