Skip to content

mirage/mirage-channel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mirage-channel — Buffered channels for MirageOS FLOW types

%%VERSION%%

Channels are buffered reader/writers built on top of unbuffered FLOW implementations.

Example:

module Channel = Channel.Make(Flow)
...
Channel.read_exactly ~len:16 t >>= function
| Error read_error
| Ok `Eof -> ...
| Ok `Data bufs -> (* read header of message *)
  let payload_length = Cstruct.(LE.get_uint16 (concat bufs) 0) in
  Channel.read_exactly ~len:payload_length t >>= function
  | Ok `Data bufs -> (* payload of message *)
  | Ok `Eof -> ...
  | Error read_error
(* process message *)

Channel.write_buffer t header;
Channel.write_buffer t payload;
Channel.flush t >>= function
| Error write_error -> ...
| Ok () -> ...

mirage-channel is distributed under the ISC license.

Installation

mirage-channel can be installed with opam:

opam install mirage-channel

If you don't use opam consult the opam file for build instructions.

Documentation

The documentation and API reference is automatically generated by ocamldoc from the interfaces. It can be consulted online and there is a generated version in the doc directory of the distribution.

Sample programs

If you installed mirage-channel with opam sample programs are located in the directory opam config var channel:doc.

In the distribution sample programs and tests are located in the test directory of the distribution. They can be built with:

dune runtest

About

An implementation of channels using page-aligned memory

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 8

Languages