56 lines
1.4 KiB
Text
56 lines
1.4 KiB
Text
|
|
version: "5.0.0"
|
||
|
|
opam-version: "2.0"
|
||
|
|
maintainer: "Anil Madhavapeddy <anil@recoil.org>"
|
||
|
|
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)" ]
|