Bounded XDR schema interpreter, binary interchange and ONC RPC wire toolkit in pure MoonBit
moon add kekeshuo/moonxdr@0.2.0let schema = @xdr.parse_schema(
"typedef quadruple Q; union Measurement switch(unsigned int tag) { case 4294967295: Q reading; default: void; };",
)
let q = @xdr.Quadruple::from_hex("3fff0000000000000000000000000000")
let value = @xdr.VUnion(4294967295L, @xdr.VQuadruple(q))
let wire = @xdr.encode(schema, "Measurement", value)
assert_eq(@xdr.to_hex(wire), "ffffffff3fff0000000000000000000000000000")
assert_true(@xdr.encode(schema, "Measurement", @xdr.decode(schema, "Measurement", wire)) == wire)moon run examples/schema --deny-warn
moon run examples/rpc --deny-warn
moon run examples/interchange --deny-warn
moon run examples/standard --deny-warn| XDR | JSON |
|---|---|
| int / uint / enum | checked integral number; enum also accepts a name |
| hyper / uhyper | exact decimal string |
| quadruple | exactly 32 hex digits in network word order; all bits retained |
| float / double | finite JSON number; use binary APIs for NaN/payload/negative-zero fidelity |
| opaque | even-length hex string |
| optional | null or {"some": VALUE}; nested optionals remain distinguishable |
| struct / array | exact-key object / array |
| union | {"tag": NUMBER, "value": VALUE}; signedness follows schema |
| void | null |
moon info && moon fmt
moon fmt --check
moon check --deny-warn
moon build --deny-warn
moon test --deny-warn
python scripts/reference_vectors.py --check
python scripts/reference128.py --check
python scripts/audit.pypub(all) enum AcceptStatus {
Success(Array[Byte])
ProgramUnavailable
ProgramMismatch(UInt, UInt)
ProcedureUnavailable
GarbageArguments
SystemError
}pub(all) struct Limits {
max_bytes : Int
max_items : Int
max_depth : Int
max_schema_tokens : Int
}fn RecordDecoder::feed(self : RecordDecoder, chunk : Array[Byte]) -> Array[Array[Byte]] raise XdrErrorpub(all) struct RpcCall {
xid : UInt
program : UInt
version : UInt
procedure : UInt
credential : OpaqueAuth
verifier : OpaqueAuth
arguments : Array[Byte]
}Install
Download zipBounded XDR schema interpreter, binary interchange and ONC RPC wire toolkit in pure MoonBit