///|
/// Public facade for schema APIs.
pub using @schema {
parse,
type Primitive,
type Field,
type NamedDefinition,
type Schema,
type SchemaError,
type SchemaKind,
}
///|
/// Public facade for datum codec APIs.
pub using @codec {
decode,
decode_from,
encode,
encode_into,
type CodecError,
type CodecLimits,
type Datum,
type Decoder,
type Encoder,
}
///|
/// Public facade for Object Container File APIs.
pub using @ocf {
decode_container,
decode_header,
encode_container,
encode_container_blocks,
encode_header,
is_ocf,
magic,
type CompressionCodec,
type OcfBlockConfig,
type OcfError,
type OcfHeader,
type OcfLimits,
type OcfReader,
type OcfWriter,
default_block_config,
default_limits,
}
///|
/// Public facade for schema-driven Avro JSON datum conversion.
pub using @json {from_json, stringify, to_json, type JsonError, type JsonLimits}
///|
/// Public error type for Avro Single-Object Encoding operations.
pub using @single_object {type SingleObjectError}
///|
/// Encode one datum using the Avro Single-Object Encoding envelope.
pub fn encode_single_object(
schema : Schema,
datum : Datum,
) -> Bytes raise SingleObjectError {
@single_object.encode(schema, datum)
}
///|
/// Decode one Single-Object Encoding value using an expected schema.
pub fn decode_single_object(
schema : Schema,
input : Bytes,
limits? : CodecLimits = CodecLimits::new(),
) -> Datum raise SingleObjectError {
@single_object.decode(schema, input, limits~)
}
///|
/// Resolve a Single-Object Encoding writer schema by fingerprint and decode
/// the enclosed datum.
pub fn decode_single_object_resolved(
input : Bytes,
resolve : (UInt64) -> Schema?,
limits? : CodecLimits = CodecLimits::new(),
) -> (Schema, Datum) raise SingleObjectError {
@single_object.decode_resolved(input, resolve, limits~)
}
///|
/// Extract the CRC-64-AVRO schema fingerprint from a single-object envelope.
pub fn single_object_fingerprint(
input : Bytes,
) -> UInt64 raise SingleObjectError {
@single_object.fingerprint(input)
}
///|
/// Parse JSON text into a datum without colliding with the schema `parse` API.
pub fn parse_json(
schema : Schema,
input : String,
limits? : JsonLimits = JsonLimits::new(),
) -> Datum raise JsonError {
@json.parse(schema, input, limits~)
}