queue.bend checks
raw source on the hub · import bend-kit-scheduler@0.1.0.0/queue.bend as Queue
Pure generic scheduler queue; Nat deadlines and never-reused FIFO IDs.
2 imports
import Base import bend-kit-collections@0.1.2.0/heap.bend as H
Types
type Ticket source · line 5 · raw
@-A:Data -> Data
Ticket@-A:Data -> @id:Nat -> @deadline:Nat -> @payload:A -> Ticket<A>
type State source · line 8 · raw
@-A:Data -> Data
State@-A:Data -> @next_id:Nat -> @pending:0xd2d968d969a26029a632a3347c989456/heap.Heap<Ticket<A>> -> @running:List<&2, Ticket<A>> -> State<A>
type Taken source · line 113 · raw
@-A:Data -> Data
Taken@-A:Data -> @remaining:List<&2, Ticket<A>> -> @found:Maybe<&2, Ticket<A>> -> Taken<A>
Definitions
def id source · line 11 · raw
@-A:Data -> @t:Ticket<A> -> Nat
def deadline source · line 16 · raw
@-A:Data -> @t:Ticket<A> -> Nat
def payload source · line 21 · raw
@-A:Data -> @t:Ticket<A> -> A
def le.same source · line 26 · raw
@b:Bool -> @i:Nat -> @j:Nat -> @d:Nat -> @e:Nat -> Bool
def le source · line 33 · raw
@-A:Data -> @a:Ticket<A> -> @b:Ticket<A> -> Bool
def new source · line 38 · raw
@-A:Data -> State<A>
def remove.list.keep source · line 62 · raw
@-A:Data -> @b:Bool -> @t:Ticket<A> -> @rest:List<&2, Ticket<A>> -> List<&2, Ticket<A>>
ponytail: eager O(n) cancellation; indexed deletion if cancellation dominates.
def remove.list source · line 69 · raw
@-A:Data -> @xs:List<&2, Ticket<A>> -> @+i:Nat -> List<&2, Ticket<A>>
def find.list.choose source · line 99 · raw
@-A:Data -> @b:Bool -> @t:Ticket<A> -> @rest:Maybe<&2, Ticket<A>> -> Maybe<&2, Ticket<A>>
Reference observation for laws; completion uses the single-pass take below.
def find.list source · line 106 · raw
@-A:Data -> @xs:List<&2, Ticket<A>> -> @+i:Nat -> Maybe<&2, Ticket<A>>
def take.keep source · line 117 · raw
@-A:Data -> @b:Bool -> @t:Ticket<A> -> @result:Taken<A> -> Taken<A>
Remove all matching entries and return the first token in one traversal.
def take.list source · line 128 · raw
@-A:Data -> @xs:List<&2, Ticket<A>> -> @+i:Nat -> Taken<A>
def complete.taken source · line 135 · raw
@-A:Data -> @result:Taken<A> -> @n:Nat -> @h:0xd2d968d969a26029a632a3347c989456/heap.Heap<Ticket<A>> -> Pair(State<A>, Maybe<&2, Ticket<A>>)
def complete source · line 140 · raw
@-A:Data -> @i:Nat -> @s:State<A> -> Pair(State<A>, Maybe<&2, Ticket<A>>)
def next_id source · line 162 · raw
@-A:Data -> @s:State<A> -> Nat
Non-consuming observations used by adapters and laws.
def pending source · line 167 · raw
@-A:Data -> @s:State<A> -> 0xd2d968d969a26029a632a3347c989456/heap.Heap<Ticket<A>>
def running source · line 172 · raw
@-A:Data -> @s:State<A> -> List<&2, Ticket<A>>
Templates
template enqueue source · line 41 · raw
@-A:Data -> @d:Nat -> @x:A -> @s:State<A> -> Pair(State<A>, Nat)
template select.due source · line 46 · raw
@-A:Data -> @b:Bool -> @i:Nat -> @h:0xd2d968d969a26029a632a3347c989456/heap.Heap<Ticket<A>> -> @r:List<&2, Ticket<A>> -> @t:Ticket<A> -> @l:0xd2d968d969a26029a632a3347c989456/heap.Heap<Ticket<A>> -> @q:0xd2d968d969a26029a632a3347c989456/heap.Heap<Ticket<A>> -> Pair(State<A>, Maybe<&2, Ticket<A>>)
template select source · line 54 · raw
@-A:Data -> @now:Nat -> @s:State<A> -> Pair(State<A>, Maybe<&2, Ticket<A>>)
template remove.heap.keep source · line 76 · raw
@-A:Data -> @b:Bool -> @t:Ticket<A> -> @l:0xd2d968d969a26029a632a3347c989456/heap.Heap<Ticket<A>> -> @r:0xd2d968d969a26029a632a3347c989456/heap.Heap<Ticket<A>> -> 0xd2d968d969a26029a632a3347c989456/heap.Heap<Ticket<A>>
template remove.heap source · line 85 · raw
@-A:Data -> @h:0xd2d968d969a26029a632a3347c989456/heap.Heap<Ticket<A>> -> @+i:Nat -> 0xd2d968d969a26029a632a3347c989456/heap.Heap<Ticket<A>>
template cancel source · line 92 · raw
@-A:Data -> @i:Nat -> @s:State<A> -> State<A>
template requeue.found source · line 145 · raw
@-A:Data -> @found:Maybe<&2, Ticket<A>> -> @d:Nat -> @s:State<A> -> Pair(State<A>, Bool)
template requeue.completed source · line 154 · raw
@-A:Data -> @r:Pair(State<A>, Maybe<&2, Ticket<A>>) -> @d:Nat -> Pair(State<A>, Bool)
template requeue source · line 158 · raw
@-A:Data -> @i:Nat -> @d:Nat -> @s:State<A> -> Pair(State<A>, Bool)