use std::future::Future;
use std::pin::Pin;
pub type BoxedResult<T> = std::result::Result<T, Box<dyn std::error::Error + Send + Sync>>;
pub type BoxedFuture<T> = Pin<Box<dyn Future<Output = BoxedResult<T>> + Send + 'static>>;
pub type TaskFn<Args, Output> =
fn(Args) -> Pin<Box<dyn Future<Output = BoxedResult<Output>> + Send>>;
pub type BoxedBroker = Box<dyn crate::Broker>;
#[cfg(feature = "backend-redis")]
pub type BoxedResultBackend = Box<dyn crate::ResultBackend>;
pub type WorkerBuilder = celers_worker::WorkerConfigBuilder;
pub type TaskSignature = crate::Signature;
pub type ChainBuilder = crate::Chain;
pub type GroupBuilder = crate::Group;
pub type ChordBuilder = crate::Chord;
pub type QueueTask = crate::SerializedTask;
pub use crate::TaskState;
pub use crate::BrokerError;
pub type TaskId = uuid::Uuid;
pub use crate::TaskResultValue;
pub type EventEmitter = Box<dyn crate::EventEmitter>;
pub use crate::AsyncResult;
pub use crate::WorkerStats;
pub use crate::TaskOptions;
pub use crate::RateLimitConfig;
pub use crate::Router;
pub type QueueName = String;
pub type BrokerUrl = String;
pub type RetryCount = u32;
pub type PriorityLevel = u8;
pub type TimeoutSeconds = u64;
pub type TaskName = String;
pub type ConcurrencyLevel = usize;
pub type PrefetchCount = usize;
pub trait TaskArgs: serde::Serialize + serde::de::DeserializeOwned + Send + Sync + 'static {}
impl<T> TaskArgs for T where
T: serde::Serialize + serde::de::DeserializeOwned + Send + Sync + 'static
{
}
pub trait TaskResult: serde::Serialize + serde::de::DeserializeOwned + Send + 'static {}
impl<T> TaskResult for T where T: serde::Serialize + serde::de::DeserializeOwned + Send + 'static {}
pub trait BrokerImpl: crate::Broker + Send + Sync {}
pub mod defaults {
pub const DEFAULT_CONCURRENCY: usize = 4;
pub const DEFAULT_PREFETCH: usize = 10;
pub const DEFAULT_MAX_RETRIES: u32 = 3;
pub const DEFAULT_RETRY_DELAY_SECS: u64 = 60;
pub const DEFAULT_TASK_TIMEOUT_SECS: u64 = 3600;
pub const DEFAULT_REDIS_PORT: u16 = 6379;
pub const DEFAULT_POSTGRES_PORT: u16 = 5432;
pub const DEFAULT_MYSQL_PORT: u16 = 3306;
pub const DEFAULT_RABBITMQ_PORT: u16 = 5672;
pub const DEFAULT_QUEUE_NAME: &str = "celery";
}
pub mod examples {
pub const REDIS_URL_EXAMPLE: &str = "redis://localhost:6379";
pub const POSTGRES_URL_EXAMPLE: &str = "postgres://user:password@localhost:5432/celery";
pub const MYSQL_URL_EXAMPLE: &str = "mysql://user:password@localhost:3306/celery";
pub const RABBITMQ_URL_EXAMPLE: &str = "amqp://guest:guest@localhost:5672/";
pub const SQS_URL_EXAMPLE: &str = "https://sqs.us-east-1.amazonaws.com/123456789012/my-queue";
}