module Rpc_packer:sig..end
Packing and Unpacking of messages; can be used by both client and
server programs.
RPC messages consists of a frame and of application data. The packing
(and unpacking) of the latter into the frame is done by this module.
The frame is an XDR value with some slots that can be filled with
application data, normally again an XDR value. The slots are represented
using the X_param mechanism provided by the XDR module. As nested X_param
usage is not permitted, this feature is not available for application
data.
type packed_value
val pack_call : ?encoder:Netxdr.encoder ->
Rpc_program.t ->
Netnumber.uint4 ->
string ->
string ->
string -> string -> string -> Netxdr.xdr_value -> packed_valuePacks the call and returns a packed_value that wraps the message
string
val pack_call_pseudo : Rpc_program.t ->
Netnumber.uint4 ->
string ->
string ->
string -> string -> string -> Netxdr.xdr_value -> packed_valuePacks the call and returns a packed_value that contains the arguments
as they are (i.e. not encoded as string).
val pack_call_gssapi_header : Rpc_program.t ->
Netnumber.uint4 -> string -> string -> string -> packed_valuefor GSS-API - packs the call header up to the credentials
val unpack_call : ?mstring_factories:Netxdr_mstring.named_mstring_factories ->
?decoder:Netxdr.decoder ->
Rpc_program.t ->
string ->
packed_value ->
Netnumber.uint4 * Netnumber.uint4 * Netnumber.uint4 * Netnumber.uint4 *
string * string * string * string * Netxdr.xdr_valueUnpacks the call completely
val unpack_call_frame : packed_value ->
Netnumber.uint4 * Netnumber.uint4 * Netnumber.uint4 * Netnumber.uint4 *
string * string * string * stringUnpacks only the frame of the call.
val unpack_call_frame_l : packed_value ->
Netnumber.uint4 * Netnumber.uint4 * Netnumber.uint4 * Netnumber.uint4 *
string * string * string * string * intUnpacks only the frame of the call, returns also the length of the frame
val extract_call_gssapi_header : packed_value -> intreturns the length of the prefix of the message so that the prefix includes the header until (and including) the credentials.
This function is unavailable for values packed with any of the
pack_*_pseudo functions.
val unpack_call_body : ?mstring_factories:Netxdr_mstring.named_mstring_factories ->
?decoder:Netxdr.decoder ->
Rpc_program.t -> string -> packed_value -> int -> Netxdr.xdr_valueUnpacks only the body (the parameters of the procedure call) of
the packed_value. You can pass the length of the call frame as the
position of the body.
This works also for values packed with pack_*_pseudo, and the
position is ignored in this case.
val unpack_call_body_raw : packed_value -> int -> string
val unpack_call_body_raw_bytes : packed_value -> int -> Stdlib.Bytes.tA successful reply means that the procedure call returned a value. An accepting reply means that authentication was successful but the procedure could not be evaluated. The third catagory of replies are rejecting replies.
val pack_successful_reply : ?encoder:Netxdr.encoder ->
Rpc_program.t ->
string ->
Netnumber.uint4 ->
string -> string -> Netxdr.xdr_value -> packed_valuePacks a successful reply
val pack_successful_reply_pseudo : Rpc_program.t ->
string ->
Netnumber.uint4 ->
string -> string -> Netxdr.xdr_value -> packed_valuePacks a successful reply as pseudo message
val pack_successful_reply_raw : Netnumber.uint4 ->
string -> string -> Netxdr_mstring.mstring list -> packed_value
val pack_accepting_reply : Netnumber.uint4 ->
string -> string -> Rpc.server_error -> packed_valuePacks a server error that counts as accepting call
val pack_accepting_reply_pseudo : Netnumber.uint4 ->
string -> string -> Rpc.server_error -> packed_valueSame, but returns a pseudo message
val pack_rejecting_reply : Netnumber.uint4 -> Rpc.server_error -> packed_valuePacks a server error that counts as rejecting call
val pack_rejecting_reply_pseudo : Netnumber.uint4 -> Rpc.server_error -> packed_valueSame, but returns a pseudo message
val unpack_reply : ?mstring_factories:Netxdr_mstring.named_mstring_factories ->
?decoder:Netxdr.decoder ->
Rpc_program.t ->
string ->
packed_value ->
Netnumber.uint4 * string * string * Netxdr.xdr_valueunpack_reply may raise:
Rpc_server: If one of the server error conditions is true. Note that the
call may be "accepted" even if this exception occurs. In this case
use unpack_reply_verfifier to get the verifier.val unpack_reply_verifier : Rpc_program.t -> string -> packed_value -> string * string
val peek_xid : packed_value -> Netnumber.uint4Extracts the session ID without analyzing the rest of the message.
val peek_auth_error : packed_value -> Rpc.server_error optionIf an authentication error occurs, this function extracts it from the packed message.
val length_of_packed_value : packed_value -> int
val string_of_packed_value : packed_value -> string
val bytes_of_packed_value : packed_value -> Stdlib.Bytes.t
val mstrings_of_packed_value : packed_value -> Netxdr_mstring.mstring listGet the packed string. These functions cannot be used for values
returned from any of the pack_*_pseudo functions.
val packed_value_of_string : string -> packed_value
val packed_value_of_bytes : Stdlib.Bytes.t -> packed_value
val packed_value_of_mstrings : Netxdr_mstring.mstring list -> packed_value
val prefix_of_packed_value : packed_value -> int -> stringThe first n bytes of the packed value
val xdr_of_pseudo_value : packed_value -> Netxdr.xdr_value
val pseudo_value_of_xdr : Netxdr.xdr_value -> packed_value