#![cfg_attr(feature = "postgres", doc = "```rust,no_run")]
#![cfg_attr(not(feature = "postgres"), doc = "```rust,ignore")]
#[macro_use]
mod macros;
pub mod archive;
pub mod batch;
pub mod config;
pub mod cron;
#[cfg(feature = "encryption")]
pub mod encryption;
pub mod error;
pub mod job;
pub mod migrations;
pub mod priority;
pub mod queue;
pub mod rate_limit;
pub mod retry;
pub mod spawn;
pub mod stats;
#[cfg(any(
feature = "webhooks",
feature = "streaming",
feature = "kafka",
feature = "google-pubsub",
feature = "kinesis"
))]
mod task_tracker;
pub mod tracing;
pub mod worker;
pub mod workflow;
#[cfg(feature = "metrics")]
pub mod metrics;
#[cfg(feature = "alerting")]
pub mod alerting;
pub mod events;
#[cfg(feature = "webhooks")]
pub mod webhooks;
#[cfg(any(
feature = "streaming",
feature = "kafka",
feature = "google-pubsub",
feature = "kinesis"
))]
pub mod streaming;
#[cfg(all(test, feature = "webhooks"))]
mod integration_tests;
#[cfg(any(feature = "gcp-kms", feature = "google-pubsub"))]
pub(crate) fn ensure_rustls_crypto_provider() {
if rustls::crypto::CryptoProvider::get_default().is_none() {
let _ = rustls::crypto::aws_lc_rs::default_provider().install_default();
}
}
pub use archive::{
ArchivalConfig, ArchivalPolicy, ArchivalReason, ArchivalStats, ArchiveEvent, ArchivedJob,
JobArchiver,
};
pub use batch::{BatchId, BatchResult, BatchStatus, JobBatch, PartialFailureMode};
pub use config::{
ArchiveConfig, DatabaseConfig, HammerworkConfig, KeyRotationConfig, KeySourceRef,
LoggingConfig, PayloadEncryptionAlgorithm, PayloadEncryptionConfig, RateLimitingConfig,
WorkerConfig,
};
#[cfg(any(
feature = "streaming",
feature = "kafka",
feature = "google-pubsub",
feature = "kinesis"
))]
pub use config::{StreamingConfigs, StreamingGlobalSettings};
#[cfg(any(
feature = "streaming",
feature = "kafka",
feature = "google-pubsub",
feature = "kinesis"
))]
pub use streaming::StreamConfig;
#[cfg(feature = "webhooks")]
pub use config::{WebhookConfigs, WebhookGlobalSettings};
pub use cron::{CronError, CronSchedule};
#[cfg(feature = "encryption")]
pub use encryption::{
EncryptedPayload, EncryptionAlgorithm, EncryptionConfig, EncryptionEngine, EncryptionError,
EncryptionKey, EncryptionMetadata, EncryptionStats, ExternalKmsConfig, KeyAuditFilter,
KeyAuditRecord, KeyDerivationConfig, KeyManager, KeyManagerConfig, KeyManagerStats,
KeyOperation, KeyPurpose, KeySource, KeyStatus, RetentionPolicy, generate_deterministic_key,
generate_deterministic_key_with_size,
};
pub use error::HammerworkError;
pub use job::{Job, JobId, JobStatus, ResultConfig, ResultStorage};
pub use priority::{
JobPriority, PriorityError, PrioritySelectionStrategy, PriorityStats, PriorityWeights,
};
pub use queue::{
DequeueOptions, EncryptedJobPurge, JobOutcome, JobQueue, JobTransition, RecordedOutcome,
StaleJobRecovery,
};
pub use rate_limit::{RateLimit, RateLimiter, ThrottleConfig};
pub use retry::{JitterType, RetryStrategy, fibonacci};
pub use spawn::{JobSpawnExt, SpawnConfig, SpawnHandler, SpawnManager, SpawnResult};
pub use stats::{
DeadJobSummary, InMemoryStatsCollector, JobStatistics, QueueStats, StatisticsCollector,
};
#[cfg(feature = "webhooks")]
pub use webhooks::WebhookConfig;
pub use worker::{
AutoscaleConfig, AutoscaleMetrics, BatchProcessingStats, JobEventHooks, JobHandler,
JobHandlerWithResult, JobHookEvent, JobResult, Worker, WorkerPool,
};
pub use workflow::{DependencyStatus, FailurePolicy, JobGroup, WorkflowId, WorkflowStatus};
#[cfg(feature = "metrics")]
pub use metrics::{MetricsConfig, PrometheusMetricsCollector};
#[cfg(feature = "alerting")]
pub use alerting::{
Alert, AlertManager, AlertSeverity, AlertTarget, AlertType, AlertingConfig, SmtpConfig, SmtpTls,
};
pub use events::{
EventConfig, EventFilter, EventManager, EventManagerStats, EventSubscription, JobError,
JobLifecycleEvent, JobLifecycleEventBuilder, JobLifecycleEventType,
};
#[cfg(feature = "webhooks")]
pub use webhooks::{
HttpMethod, PayloadTemplate, RetryPolicy, WebhookAuth, WebhookConfig as WebhookSettings,
WebhookDelivery, WebhookManager, WebhookManagerConfig, WebhookManagerStats, WebhookStats,
};
#[cfg(any(
feature = "streaming",
feature = "kafka",
feature = "google-pubsub",
feature = "kinesis"
))]
pub use streaming::{
BufferConfig, PartitionField, PartitioningStrategy, SerializationFormat, StreamBackend,
StreamConfig as StreamSettings, StreamDelivery, StreamManager, StreamManagerConfig,
StreamManagerGlobalStats, StreamProcessor, StreamRetryPolicy, StreamStats, StreamedEvent,
};
pub use tracing::{CorrelationId, TraceId};
#[cfg(feature = "tracing")]
pub use tracing::{
TracingConfig, create_job_span, init_tracing, set_job_trace_context, shutdown_tracing,
};
pub type Result<T> = std::result::Result<T, HammerworkError>;
#[cfg(all(
doctest,
feature = "postgres",
feature = "mysql",
feature = "test-queue",
feature = "encryption",
feature = "tracing",
feature = "streaming",
feature = "kafka"
))]
mod doc_examples {
#[doc = include_str!("../README.md")]
struct ReadmeDoctests;
#[doc = include_str!("../docs/quick-start.md")]
struct QuickStartDoctests;
#[doc = include_str!("../docs/monitoring.md")]
struct MonitoringDoctests;
#[doc = include_str!("../docs/migrations.md")]
struct MigrationsDoctests;
#[doc = include_str!("../docs/webhooks.md")]
struct WebhooksDoctests;
#[doc = include_str!("../docs/integration-testing.md")]
struct IntegrationTestingDoctests;
#[doc = include_str!("../docs/testing.md")]
struct TestingDoctests;
#[doc = include_str!("../docs/streaming.md")]
struct StreamingDoctests;
#[doc = include_str!("../docs/job-types.md")]
struct JobTypesDoctests;
#[doc = include_str!("../docs/priority-system.md")]
struct PrioritySystemDoctests;
#[doc = include_str!("../docs/cron-scheduling.md")]
struct CronSchedulingDoctests;
#[doc = include_str!("../docs/tracing.md")]
struct TracingDoctests;
#[doc = include_str!("../docs/job-spawning.md")]
struct JobSpawningDoctests;
#[doc = include_str!("../docs/workflows.md")]
struct WorkflowsDoctests;
#[doc = include_str!("../docs/worker-configuration.md")]
struct WorkerConfigurationDoctests;
#[doc = include_str!("../docs/batch-operations.md")]
struct BatchOperationsDoctests;
#[doc = include_str!("../docs/archiving.md")]
struct ArchivingDoctests;
#[doc = include_str!("../docs/encryption.md")]
struct EncryptionDoctests;
#[doc = include_str!("../docs/upgrading-to-3.0.md")]
struct UpgradingTo30Doctests;
}