Expand description
Tokio adapter for firq-core.
This crate provides async wrappers around the core scheduler, including:
AsyncSchedulerfor enqueue/dequeue operationsAsyncReceiverandAsyncStreamhelpersAsyncWorkerReceiverfor dedicated dequeue-worker modeDispatcherwith 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§
- Async
Receiver - Receiver-style async facade over scheduler dequeue.
- Async
Scheduler - Async wrapper around
Scheduler. - Async
Stream Streamadapter for dequeue operations.- Async
Worker Receiver - Receiver/stream adapter backed by a dedicated dequeue worker thread.
- Dequeue
Item - Dequeued tenant/task pair.
- Dispatcher
- Queue
Time Bucket - Single histogram bucket for queue time metrics.
- Scheduler
- Multi-tenant in-process scheduler with DRR fairness and explicit backpressure.
- Scheduler
Config - Scheduler runtime configuration.
- Scheduler
Stats - Snapshot of scheduler metrics.
- Task
- Enqueued unit of work.
- Task
Handle - Opaque identifier for a pending task.
- Tenant
Count - Tenant counter entry used in top-talker snapshots.
- Tenant
Key - Stable fairness key used to assign work to shards and DRR queues.
Enums§
- Backpressure
Policy - Behavior when enqueue capacity limits are hit.
- Cancel
Result - Result of task cancellation.
- Close
Mode - Scheduler shutdown mode.
- Dequeue
Result - Result of a dequeue attempt.
- Enqueue
Reject Reason - Reason for enqueue rejection.
- Enqueue
Result - Result of an enqueue operation.
- Enqueue
With Handle Result - Result of
enqueue_with_handle. - Priority
- Scheduling priority for a task.