protocol-9p

An implementation of the 9P protocol in pure OCaml
Library protocol_9p
module Version : sig ... end
module Auth : sig ... end
module Err : sig ... end
module Flush : sig ... end
module Attach : sig ... end
module Walk : sig ... end
module Open : sig ... end
module Create : sig ... end
module Read : sig ... end
module Write : sig ... end
module Clunk : sig ... end
module Remove : sig ... end
module Stat : sig ... end
module Wstat : sig ... end
type payload =
| Version of Version.t
| Auth of Auth.t
| Err of Err.t
| Flush of Flush.t
| Attach of Attach.t
| Walk of Walk.t
| Open of Open.t
| Create of Create.t
| Read of Read.t
| Write of Write.t
| Clunk of Clunk.t
| Remove of Remove.t
| Stat of Stat.t
| Wstat of Wstat.t

A variant including all possible 9P response payloads

val payload_of_sexp : Sexplib.Sexp.t -> payload
val sexp_of_payload : payload -> Sexplib.Sexp.t
type t = {
tag : Protocol_9p__Protocol_9p_types.Tag.t;(*

The tag used to match this response with the original request

*)
payload : payload;
}

A 9P protocol response

val t_of_sexp : Sexplib.Sexp.t -> t
val sexp_of_t : t -> Sexplib.Sexp.t
val sizeof : t -> int

The size of a buffer needed to hold t

val read : Cstruct.t -> ( t * Cstruct.t, [ `Msg of string ] ) Result.result

Read a t from the given buffer and return it, along with the unused remainder of the buffer. If the buffer cannot be parsed then return an error.

val write : t -> Cstruct.t -> ( Cstruct.t, [ `Msg of string ] ) Result.result

Write a t into the given buffer. If the buffer is too small, then return an error. Return the unused remainder of the buffer.

val pp : t Fmt.t

pp pretty-prints responses.

val equal : t -> t -> bool

equal is the equality function over responses.

val sizeof_header : int

The size of the fixed response header

val error : ?errno:int32 -> ( 'a, unit, string, ( _, Err.t ) Result.result ) Pervasives.format4 -> 'a