Declaraciones públicas de zig/src/frame.zig (spire-zig (SDK consumido)).
apps/docs/generated/zig/spire.jsonPágina generada desde
spire@spire-0.2.0-XvnrRek1BgCX4Bh8miuITCQgkn0FqeQrYYE3goFfDcQd (zig/src/root.zig). No se edita a mano:bun run docs:genla regenera ybun run docs:checkfalla si difiere.
Framing de spire sobre streams (unix socket): u32 BE len ‖ u8 tipo ‖ cuerpo.
Es el mismo marco que ya usaba el IPC de control de styx
(protocols/session-ipc: 4 bytes de longitud del cuerpo, 1 byte de
versión, cuerpo). spire reinterpreta el byte como tipo de frame:
0x01 JSON v1 del IPC antiguo — spire lo reconoce para rechazarlo con
un error claro, nunca lo procesa.
0x02 sobre v2 (envelope.zig).
0x20 handshake HELLO (servidor → cliente)
0x21 handshake AUTH (cliente → servidor)
0x22 handshake WELCOME (servidor → cliente)
FrameReader es incremental y no reserva memoria: el llamador le da un
buffer fijo de HEADER_LEN + max_body bytes. Una longitud declarada por
encima de max_body es un error antes de leer el cuerpo (nadie puede
hacer que el lector espere 4 GiB).
frame.HEADER_LENconst · línea 23
pub const HEADER_LEN: usize = 5Sin ///.
frame.HARD_MAX_BODYconst · línea 25
pub const HARD_MAX_BODY: u32 = 1 << 20Techo duro del cuerpo (dec-0119 §7): el mismo 1 MiB del IPC anterior.
frame.FrameTypetype · línea 27
pub const FrameType = enumSin ///.
frame.FrameType.fromBytefn · línea 34
pub fn fromByte(b: u8) ?FrameTypeSin ///.
frame.Frametype · línea 39
pub const Frame = structSin ///.
frame.Errorconst · línea 46
pub const Error = error{ /// La longitud declarada supera el máximo del lector. FrameTooLarge, /// Tipo de frame desconocido. UnknownFrameType, /// Frame de la versión JSON v1 del IPC antiguo. Legac …Sin ///.
frame.writeHeaderfn · línea 56
pub fn writeHeader(out: *[HEADER_LEN]u8, ftype: FrameType, body_len: usize) error{FrameTooLarge}!voidEscribe la cabecera de un frame con cuerpo de body_len bytes.
frame.FrameReadertype · línea 62
pub const FrameReader = structSin ///.
frame.FrameReader.initfn · línea 71
pub fn init(buf: []u8, max_body: u32) FrameReaderbuf.len debe ser al menos HEADER_LEN + max_body.
frame.FrameReader.writablefn · línea 79
pub fn writable(self: *FrameReader) []u8Espacio libre donde leer más bytes del socket. Invalida el último
Frame devuelto (compacta el buffer).
frame.FrameReader.advancefn · línea 90
pub fn advance(self: *FrameReader, n: usize) voidMarca n bytes de writable() como leídos.
frame.FrameReader.nextfn · línea 96
pub fn next(self: *FrameReader) Error!?FrameSiguiente frame completo, o null si faltan bytes.
frame.FrameReader.pendingBytesfn · línea 109
pub fn pendingBytes(self: *const FrameReader) usizeBytes recibidos sin completar un frame (para detectar cierres a medias).