Skip to main content

Crate firq_core

Crate firq_core 

Source
Expand description

Core scheduling primitives for Firq.

firq-core is runtime-agnostic and contains the scheduling engine used by the async and web integration crates.

It provides:

  • Deficit Round Robin (DRR) fairness by tenant
  • Global/per-tenant backpressure policies
  • Deadline-aware dequeue semantics
  • Queue-time metrics and saturation signals
  • Prometheus text rendering helpers (metrics feature, enabled by default)
  • Pending task cancellation and shutdown modes

§Basic usage

use firq_core::{EnqueueResult, Priority, Scheduler, SchedulerConfig, Task, TenantKey};
use std::time::Instant;

let scheduler = Scheduler::new(SchedulerConfig::default());
let tenant = TenantKey::from(1);
let task = Task {
    payload: "work",
    enqueue_ts: Instant::now(),
    deadline: None,
    priority: Priority::Normal,
    cost: 1,
};

match scheduler.enqueue(tenant, task) {
    EnqueueResult::Enqueued => {}
    EnqueueResult::Rejected(_) => {}
    EnqueueResult::Closed => {}
}

Modules§

prometheus

Structs§

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.