http2-3.0.3: HTTP/2 library
Safe Haskell None
Language Haskell2010

Network.HTTP2.Priority

Description

Deprecated: Should be replaced with extensible priority

This is partial implementation of the priority of HTTP/2.

This implementation does support structured priority queue but not support re-structuring. This means that it is assumed that an entry created by a Priority frame is never closed. The entry behaves an intermediate node, not a leaf.

This queue is fair for weight. Consider two weights: 201 and 101. Repeating enqueue/dequeue probably produces 201, 201, 101, 201, 201, 101, ...

Only one entry per stream should be enqueued.

Synopsis

Precedence

toPrecedence :: Priority -> Precedence Source #

Converting Priority to Precedence . When an entry is enqueued at the first time, this function should be used.

PriorityTree

data PriorityTree a Source #

Abstract data type for priority trees.

newPriorityTree :: IO ( PriorityTree a) Source #

Creating a new priority tree.

PriorityTree functions

prepare :: PriorityTree a -> StreamId -> Priority -> IO () Source #

Bringing up the structure of the priority tree. This must be used for Priority frame.

enqueue :: PriorityTree a -> StreamId -> Precedence -> a -> IO () Source #

Enqueuing an entry to the priority tree. This must be used for Header frame.

dequeue :: PriorityTree a -> IO ( StreamId , Precedence , a) Source #

Dequeuing an entry from the priority tree.

dequeueSTM :: PriorityTree a -> STM ( StreamId , Precedence , a) Source #

Dequeuing an entry from the priority tree.

isEmpty :: PriorityTree a -> IO Bool Source #

Checking if the priority tree is empty.

isEmptySTM :: PriorityTree a -> STM Bool Source #

Checking if the priority tree is empty.

delete :: PriorityTree a -> StreamId -> Precedence -> IO ( Maybe a) Source #

Deleting the entry corresponding to StreamId . delete and enqueue are used to change the priority of a live stream.