Referencia Zigspire-zig (SDK consumido)

zig/src/transport/unix.zig

Declaraciones públicas de zig/src/transport/unix.zig (spire-zig (SDK consumido)).

ImplementadoSin versión del tren todavía· generada desde apps/docs/generated/zig/spire.json

Página generada desde spire@spire-0.2.0-XvnrRek1BgCX4Bh8miuITCQgkn0FqeQrYYE3goFfDcQd (zig/src/root.zig). No se edita a mano: bun run docs:gen la regenera y bun run docs:check falla si difiere.

Transporte unix de spire (dec-0119 §3.2): el socket de control Bun ↔ daemon. Es el único sitio de styx que abre sockets unix (dec-0117 §6).

Servidor, por conexión:

  1. SO_PEERCRED (Linux) / getpeereid (BSD/macOS): uid/gid en la allowlist, si no se cierra sin enviar nada.
  2. Handshake mutuo firmado (handshake.zig) con plazo de 2 s: hasta que no se completa no se lee ningún sobre.
  3. Bucle de frames: cada sobre pasa por el Router con la identidad autenticada del peer; la respuesta sale por la misma conexión.

Backpressure: cada conexión procesa sus frames en orden (un mensaje en vuelo por peer); si el peer no lee, su escritura bloquea sólo su hilo. Un peer que manda basura (sobres descartados) se desconecta al max_drops-ésimo. Máximo max_conns conexiones a la vez.

Hilo por conexión (el control plane es de baja frecuencia; los bytes de media nunca pasan por aquí, r01).

transport.unix.Error

const · línea 32

pub const Error = error{ SocketFailed, PathTooLong, AddressInUse, BindFailed, ListenFailed, ConnectFailed, WriteFailed, ReadFailed, Closed, Timeout, HandshakeFailed, ProtocolError, }

Sin ///.

transport.unix.PeerCred

type · línea 49

pub const PeerCred = struct

Sin ///.

transport.unix.peerCred

fn · línea 54

pub fn peerCred(fd: c.fd_t) ?PeerCred

Sin ///.

transport.unix.ServerOptions

type · línea 168

pub const ServerOptions = struct

Sin ///.

transport.unix.Server

fn · línea 191

pub fn Server(comptime App: type) type

Sin ///.

transport.unix.Server.init

fn · línea 232

pub fn init(allocator: std.mem.Allocator, router: *R, opts: ServerOptions) Self

Sin ///.

transport.unix.Server.listen

fn · línea 239

pub fn listen(self: *Self) Error!void

Crea el socket. Si path ya existe y es un socket, se sustituye (arranque tras una caída); cualquier otra cosa en esa ruta es un error (no se borra un fichero ajeno).

transport.unix.Server.start

fn · línea 257

pub fn start(self: *Self) !void

Sin ///.

transport.unix.Server.stop

fn · línea 263

pub fn stop(self: *Self) void

Cierra el socket de escucha y todas las conexiones, y espera a sus hilos.

transport.unix.Server.broadcast

fn · línea 422

pub fn broadcast(self: *Self, body: []const u8) usize

Envía un sobre ya sellado (normalmente un evt) a todos los peers autenticados. Devuelve a cuántos llegó.

transport.unix.Server.connectionCount

fn · línea 439

pub fn connectionCount(self: *Self) usize

Sin ///.

transport.unix.ClientOptions

type · línea 453

pub const ClientOptions = struct

Sin ///.

transport.unix.Client

type · línea 466

pub const Client = struct

Cliente bloqueante (una petición en vuelo). Lo usan herramientas Zig y los tests; el cliente de producción de Bun es @spire/bus.

transport.unix.Client.connect

fn · línea 475

pub fn connect(allocator: std.mem.Allocator, opts: ClientOptions) (Error || std.mem.Allocator.Error)!Client

Sin ///.

transport.unix.Client.close

fn · línea 501

pub fn close(self: *Client) void

Sin ///.

transport.unix.Client.sendRaw

fn · línea 510

pub fn sendRaw(self: *Client, body: []const u8) Error!void

Envía un sobre ya sellado.

transport.unix.Client.request

fn · línea 516

pub fn request(self: *Client, comptime C: type, arena: std.mem.Allocator, msg: C.Request, opts: client_mod.SendOptions, timeout_ms: u32) !client_mod.Reply(C)

Petición tipada: sella, envía y espera la respuesta verificada. Los evt que lleguen entretanto se guardan en events.

transport.unix.Client.awaitReply

fn · línea 523

pub fn awaitReply(self: *Client, comptime C: type, arena: std.mem.Allocator, s: *const client_mod.Sealed, timeout_ms: u32) !client_mod.Reply(C)

Sin ///.

transport.unix.Client.nextEvent

fn · línea 537

pub fn nextEvent(self: *Client, timeout_ms: u32) ![]u8

Espera el siguiente sobre que no sea respuesta (evt empujado por el servidor).