#![warn(missing_docs)]
pub mod backend;
pub mod backends;
pub mod chain;
pub mod dag;
pub mod load_balancer;
pub mod locking;
pub mod metrics;
pub mod priority_queue;
pub mod queue;
pub mod registry;
pub mod result;
pub mod retry;
pub mod scheduler;
pub mod settings;
pub mod task;
pub mod webhook;
pub mod worker;
pub use backend::{
DummyBackend, ImmediateBackend, ResultStatus, TaskBackend, TaskBackends, TaskExecutionError,
TaskResultStatus,
};
#[cfg(feature = "redis-backend")]
pub use backends::RedisTaskBackend;
#[cfg(feature = "database-backend")]
pub use backends::SqliteBackend;
#[cfg(feature = "sqs-backend")]
pub use backends::SqsBackend;
#[cfg(feature = "sqs-backend")]
#[allow(deprecated)] pub use backends::SqsConfig;
#[cfg(feature = "rabbitmq-backend")]
pub use backends::RabbitMQBackend;
#[cfg(feature = "rabbitmq-backend")]
#[allow(deprecated)] pub use backends::RabbitMQConfig;
pub use chain::{ChainStatus, TaskChain, TaskChainBuilder};
pub use dag::{TaskDAG, TaskNode, TaskNodeStatus};
pub use load_balancer::{LoadBalancer, LoadBalancingStrategy, WorkerId, WorkerInfo, WorkerMetrics};
pub use locking::{LockToken, MemoryTaskLock, TaskLock};
#[cfg(feature = "redis-backend")]
pub use locking::RedisTaskLock;
pub use metrics::{MetricsSnapshot, TaskCounts, TaskMetrics, WorkerStats};
pub use priority_queue::{Priority, PriorityTaskQueue};
#[allow(deprecated)] pub use queue::QueueConfig;
pub use queue::TaskQueue;
pub use registry::{SerializedTask, TaskFactory, TaskRegistry};
pub use result::{
MemoryResultBackend, ResultBackend, TaskOutput, TaskResult as TaskResultBackend,
TaskResultMetadata,
};
#[cfg(feature = "redis-backend")]
pub use backends::redis::RedisTaskResultBackend;
#[cfg(feature = "database-backend")]
pub use backends::sqlite::SqliteResultBackend;
#[cfg(feature = "sqs-backend")]
pub use backends::sqs::SqsResultBackend;
pub use retry::{RetryState, RetryStrategy};
pub use scheduler::{CronSchedule, Schedule, Scheduler};
pub use task::{
DEFAULT_TASK_QUEUE_NAME, TASK_MAX_PRIORITY, TASK_MIN_PRIORITY, Task, TaskExecutor, TaskId,
TaskPriority, TaskStatus,
};
pub use webhook::{
HttpWebhookSender, TaskStatus as WebhookTaskStatus, WebhookError, WebhookEvent, WebhookSender,
is_blocked_ip, validate_resolved_ips, validate_webhook_url,
};
#[allow(deprecated)]
pub use webhook::{RetryConfig, WebhookConfig};
pub use worker::Worker;
#[allow(deprecated)] pub use worker::WorkerConfig;
pub use settings::{
QueueSettings, WebhookRetrySettings, WebhookSettings, WorkerSettings,
create_webhook_sender_from_settings, create_worker_from_settings,
};
#[cfg(feature = "rabbitmq-backend")]
pub use settings::{RabbitMQSettings, create_rabbitmq_backend_from_settings};
#[cfg(feature = "sqs-backend")]
pub use settings::{SqsSettings, create_sqs_backend_from_settings};
use thiserror::Error;
pub type TaskResult<T> = Result<T, TaskError>;
#[derive(Debug, Error)]
pub enum TaskError {
#[error("Task execution failed: {0}")]
ExecutionFailed(String),
#[error("Task not found: {0}")]
TaskNotFound(String),
#[error("Queue error: {0}")]
QueueError(String),
#[error("Serialization error: {0}")]
SerializationError(String),
#[error("Task timeout")]
Timeout,
#[error("Max retries exceeded")]
MaxRetriesExceeded,
}