Module Tjr_minifs.Nfs_client

NFS client: pass requests over the network to a server

type 'w internal_marshal_err = {
internal_marshal_err : a. string -> ('a'w) Tjr_monad.m;
}

This is used to indicate that the result of a call was not what was expected

val mk_client_ops : monad_ops:'w Tjr_monad.monad_ops -> internal_marshal_err:'w internal_marshal_err -> call:(Minifs_intf.Msgs.msg_from_client -> (Minifs_intf.Msgs.msg_from_server'w) Tjr_monad.m) -> data_length:(Minifs_intf.Msgs.data -> int) -> data_of_buffer:(buffer:Tjr_minifs__Minifs_intf.buf -> off:int -> len:int -> Minifs_intf.Msgs.data) -> blit_data_to_buffer:(data:Minifs_intf.Msgs.data -> buffer:Tjr_minifs__Minifs_intf.buf -> boff:int -> unit) -> i2dh:(Minifs_intf.Msgs.dh -> 'a) -> dh2i:('a -> Minifs_intf.Msgs.dh) -> i2fd:(Minifs_intf.Msgs.fd -> 'b) -> fd2i:('b -> Minifs_intf.Msgs.fd) -> ('b'a'w) Minifs_intf.ops

Construct a message, send to server, and wait for response

val mk_client_ops : monad_ops:'a Tjr_monad.monad_ops -> internal_marshal_err:'a internal_marshal_err -> call:(Minifs_intf.Msgs.msg_from_client -> (Minifs_intf.Msgs.msg_from_server'a) Tjr_monad.m) -> i2dh:(Minifs_intf.Msgs.dh -> 'b) -> dh2i:('b -> Minifs_intf.Msgs.dh) -> i2fd:(Minifs_intf.Msgs.fd -> 'c) -> fd2i:('c -> Minifs_intf.Msgs.fd) -> ('c'b'a) Minifs_intf.ops

Specialize mk_client_ops using standard buffer auxiliary functions

module State_passing_call : sig ... end

We also need to implement call: msg_from_client->msg_from_server m; here we specialize to state_passing monad, and Unix network connections