dream-httpaf.dream-h2
Scheduler.Make
dream-httpaf
dream-httpaf.dream-gluten
dream-httpaf.dream-gluten-lwt
dream-httpaf.dream-gluten-lwt-unix
dream-httpaf.dream-h2-lwt
dream-httpaf.dream-h2-lwt-unix
dream-httpaf.dream-hpack
dream-httpaf.dream-httpaf_
dream-httpaf.dream-httpaf_-lwt
dream-httpaf.dream-httpaf_-lwt-unix
dream-httpaf.dream-websocketaf
dream-httpaf.dream-websocketaf-lwt
dream-httpaf.dream-websocketaf-lwt-unix
module Streamd : StreamDescriptor
module PriorityTreeNode : sig ... end
module PriorityQueue : Psq.S with type k = Int32.t and type p = PriorityTreeNode.stream
include module type of struct include PriorityTreeNode end
type root = PriorityTreeNode.root =
| Root
type nonroot = PriorityTreeNode.nonroot =
| NonRoot
type stream = nonroot node
and parent = PriorityTreeNode.parent =
| Parent : _ node -> parent
and _ node = _ PriorityTreeNode.node =
| Connection : {
all_streams : stream StreamsTbl.t;
mutable t_last : int;
mutable children : PriorityQueue.t;
mutable flow : Settings.WindowSize.t;
mutable inflow : Settings.WindowSize.t;
mutable marked_for_removal : (Stream_identifier.t * Stream.closed) list;
} -> root node
| Stream : {
descriptor : Streamd.t;
mutable t : int;
mutable priority : Priority.t;
mutable parent : parent;
} -> nonroot node
type t = root node
val make_root : ?capacity:int -> unit -> root node
val create : parent:parent -> initial_send_window_size:Settings.WindowSize.t -> initial_recv_window_size:Settings.WindowSize.t -> Streamd.t -> nonroot node
val pq_add : PriorityQueue.k -> PriorityQueue.p -> PriorityQueue.t -> PriorityQueue.t
val remove_from_parent : parent -> PriorityQueue.k -> unit
val children : 'a. 'a node -> PriorityQueue.t
val stream_id : 'a. 'a node -> int32
val set_parent : nonroot node -> exclusive:bool -> parent -> unit
val would_create_cycle : new_parent:parent -> nonroot node -> bool
val reprioritize_stream : root node -> priority:Priority.t -> nonroot node -> unit
val add : root node -> priority:Priority.t -> initial_send_window_size:Settings.WindowSize.t -> initial_recv_window_size:Settings.WindowSize.t -> Streamd.t -> nonroot node
val get_node : root node -> StreamsTbl.key -> stream option
val find : root node -> StreamsTbl.key -> Streamd.t option
val iter : root node -> f:(stream -> unit) -> unit
val allowed_to_transmit : root node -> nonroot node -> bool
val allowed_to_receive : root node -> nonroot node -> Settings.WindowSize.t -> bool
val write : root node -> nonroot node -> int
val update_t : nonroot node -> int -> unit
val mark_for_removal : root node -> Stream_identifier.t -> Stream.closed -> unit
val implicitly_close_idle_stream : Streamd.t -> (Stream_identifier.t * Stream_identifier.t) -> unit
val flush : root node -> (Stream_identifier.t * Stream_identifier.t) -> unit
val check_flow : Int32.t -> Int32.t -> Int32.t -> bool
val add_flow : 'a. 'a node -> int32 -> bool
val add_inflow : 'a. 'a node -> int32 -> bool
val deduct_inflow : 'a. 'a node -> int32 -> unit
val pp_hum : Format.formatter -> PriorityQueue.t -> unit