pub mod error_behavior; pub mod event; pub mod execution_error; pub mod execution_pointer; pub mod execution_result; pub mod lifecycle; pub mod poll_config; pub mod queue_type; pub mod scheduled_command; pub mod status; pub mod workflow_definition; pub mod workflow_instance; pub use error_behavior::ErrorBehavior; pub use event::{Event, EventSubscription}; pub use execution_error::ExecutionError; pub use execution_pointer::ExecutionPointer; pub use execution_result::ExecutionResult; pub use lifecycle::{LifecycleEvent, LifecycleEventType}; pub use poll_config::{HttpMethod, PollCondition, PollEndpointConfig}; pub use queue_type::QueueType; pub use scheduled_command::{CommandName, ScheduledCommand}; pub use status::{PointerStatus, WorkflowStatus}; pub use workflow_definition::{StepOutcome, WorkflowDefinition, WorkflowStep}; pub use workflow_instance::WorkflowInstance; /// Serde helper for `Option` as milliseconds. pub(crate) mod option_duration_millis { use std::time::Duration; use serde::{Deserialize, Deserializer, Serializer}; pub fn serialize( duration: &Option, serializer: S, ) -> Result { match duration { Some(d) => serializer.serialize_some(&(d.as_millis() as u64)), None => serializer.serialize_none(), } } pub fn deserialize<'de, D: Deserializer<'de>>( deserializer: D, ) -> Result, D::Error> { let millis: Option = Option::deserialize(deserializer)?; Ok(millis.map(Duration::from_millis)) } } /// Serde helper for `Duration` as milliseconds (non-optional). pub(crate) mod duration_millis { use std::time::Duration; use serde::{Deserialize, Deserializer, Serializer}; pub fn serialize(duration: &Duration, serializer: S) -> Result { serializer.serialize_u64(duration.as_millis() as u64) } pub fn deserialize<'de, D: Deserializer<'de>>(deserializer: D) -> Result { let millis = u64::deserialize(deserializer)?; Ok(Duration::from_millis(millis)) } }