PrimitiveArraySchema

sealed class PrimitiveArraySchema<A : Any> : FateSchema<A>

Base for the schemas of Kotlin's primitive arrays.

ArraySchema cannot encode a double[]. It is a FateSchema<Array<T>>, so its methods erase to take Object[], and a primitive array is not one. Boxing with toTypedArray() would allocate a whole array in every objSize and encodeObject call, which is twice per logged value.

These schemas write the ARRAY format directly. The bytes match the boxed version, so readers need no changes. elementSchema describes an element in the schema blob. Writing does not go through it, because elements are encoded inline.

Inheritors

Properties

Link copied to clipboard
Link copied to clipboard
open override val schema: ByteArray

The schema definition as bytes, which the writer puts in the log.

Link copied to clipboard
open override val schemaSize: Int

Number of bytes in this schema's definition.

Link copied to clipboard
open override val tag: Int

The integer that identifies this schema's type in the log.

Functions

Link copied to clipboard
abstract fun encodeObject(buffer: ByteBuffer, obj: A)

Writes the given object into the buffer.

Link copied to clipboard
open fun encodeSchema(buffer: ByteBuffer)

Writes the whole schema definition, starting with the tag, into the buffer.

Link copied to clipboard
override fun objSize(obj: A): Int

Returns the number of bytes encodeObject writes for the given object.