protocol-9p

An implementation of the 9P protocol in pure OCaml
Library protocol_9p
Module Protocol_9p . Types . Qid
type flag =
| Directory(*

file is a directory

*)
| AppendOnly(*

writes always hit the end of the file

*)
| Exclusive(*

file is opened for exclusive use

*)
| Mount(*

file is a mountpoint

*)
| Auth(*

file is an authentication file

*)
| Temporary(*

file is temporary and won't be backed up

*)
val flag_of_sexp : Sexplib.Sexp.t -> flag
val sexp_of_flag : flag -> Sexplib.Sexp.t
type t = {
flags : flag list;
version : int32;
id : int64;
}

The server's unique id for the file. Two files are the same if and only if the Qids are the same.

val t_of_sexp : Sexplib.Sexp.t -> t
val sexp_of_t : t -> Sexplib.Sexp.t
val any : t
val is_any : t -> bool
val file : ?id:int64 -> ?version:int32 -> ?append_only:bool -> ?exclusive:bool -> ?mount:bool -> ?auth:bool -> ?temporary:bool -> ?link:bool -> unit -> t

Construct a t representing a file

val dir : ?id:int64 -> ?version:int32 -> unit -> t

Construct a t representing a directory

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.