sig
  type elt = frame
  type buffer = elt array
  type t
  val create : int -> t
  val read_space : t -> int
  val write_space : t -> int
  val read_advance : t -> int -> unit
  val write_advance : t -> int -> unit
  val read : t -> buffer -> int -> int -> unit
  val peek : t -> buffer -> int -> int -> unit
  val write : t -> buffer -> int -> int -> unit
  val transmit : t -> (buffer -> int -> int -> int) -> int
end