Skip to main content

Crate firq_async

Crate firq_async 

Source
Expand description

Tokio adapter for firq-core.

This crate provides async wrappers around the core scheduler, including:

  • AsyncScheduler for enqueue/dequeue operations
  • AsyncReceiver and AsyncStream helpers
  • AsyncWorkerReceiver for dedicated dequeue-worker mode
  • Dispatcher with bounded in-flight execution

§Example (Tokio, worker-backed receiver)

use firq_async::{AsyncScheduler, EnqueueResult, Priority, Scheduler, SchedulerConfig, Task, TenantKey};
use std::sync::Arc;
use std::time::Instant;

let scheduler = AsyncScheduler::new(Arc::new(Scheduler::new(SchedulerConfig::default())));
let tenant = TenantKey::from(7);
let task = Task {
    payload: "job",
    enqueue_ts: Instant::now(),
    deadline: None,
    priority: Priority::Normal,
    cost: 1,
};
assert!(matches!(scheduler.enqueue(tenant, task), EnqueueResult::Enqueued));

let mut receiver = scheduler.receiver_with_worker(64);
let item = receiver.recv().await;
assert!(item.is_some());

Structs§

AsyncReceiver
Receiver-style async facade over scheduler dequeue.
AsyncScheduler
Async wrapper around Scheduler.
AsyncStream
Stream adapter for dequeue operations.
AsyncWorkerReceiver
Receiver/stream adapter backed by a dedicated dequeue worker thread.
DequeueItem
Dequeued tenant/task pair.
Dispatcher
QueueTimeBucket
Single histogram bucket for queue time metrics.
Scheduler
Multi-tenant in-process scheduler with DRR fairness and explicit backpressure.
SchedulerConfig
Scheduler runtime configuration.
SchedulerStats
Snapshot of scheduler metrics.
Task
Enqueued unit of work.
TaskHandle
Opaque identifier for a pending task.
TenantCount
Tenant counter entry used in top-talker snapshots.
TenantKey
Stable fairness key used to assign work to shards and DRR queues.

Enums§

BackpressurePolicy
Behavior when enqueue capacity limits are hit.
CancelResult
Result of task cancellation.
CloseMode
Scheduler shutdown mode.
DequeueResult
Result of a dequeue attempt.
EnqueueRejectReason
Reason for enqueue rejection.
EnqueueResult
Result of an enqueue operation.
EnqueueWithHandleResult
Result of enqueue_with_handle.
Priority
Scheduling priority for a task.