version: "5.0.0" opam-version: "2.0" maintainer: "Anil Madhavapeddy " authors: ["Anil Madhavapeddy" "Mindy Preston" "Thomas Gazagnaire"] license: "ISC" tags: "org:mirage" homepage: "https://github.com/mirage/mirage-channel" doc: "https://mirage.github.io/mirage-channel/" bug-reports: "https://github.com/mirage/mirage-channel/issues" depends: [ "ocaml" {>= "4.07.0"} "dune" {>= "1.0"} "mirage-flow" {>= "4.0.0"} "lwt" {>= "4.0.0"} "cstruct" {>= "6.0.0"} "logs" "fmt" {>= "0.8.7"} "alcotest" {with-test} "mirage-flow-combinators" {with-test & >= "2.0.0"} ] conflicts: [ "tcpip" {< "3.0.0"} ] build: [ ["dune" "subst"] {dev} ["dune" "build" "-p" name "-j" jobs] ["dune" "runtest" "-p" name "-j" jobs] {with-test} ] dev-repo: "git+https://github.com/mirage/mirage-channel.git" synopsis: "Buffered channels for MirageOS FLOW types" description: """ Channels are buffered reader/writers built on top of unbuffered `FLOW` implementations. Example: ```ocaml module Channel = Channel.Make(Flow) ... Channel.read_exactly ~len:16 t >>= fun bufs -> (* read header of message *) let payload_length = Cstruct.(LE.get_uint16 (concat bufs) 0) in Channel.read_exactly ~len:payload_length t >>= fun bufs -> (* payload of message *) (* process message *) Channel.write_buffer t header; Channel.write_buffer t payload; Channel.flush t >>= fun () -> ``` mirage-channel is distributed under the ISC license. """ x-maintenance-intent: [ "(latest)" ]