nats

NATS client for Kit using native Zig FFI

Files

FileDescription
kit.tomlPackage manifest with metadata and dependencies
src/main.kitPub/sub, request/reply, and queue group APIs
zig/kit_ffi.zigShared FFI types and Kit value constructors
zig/nats.zigNATS protocol parser and connection management
tests/nats.test.kitVerifies module import works correctly
examples/basic.kitConnect, ping, publish, and subscribe demo
examples/pubsub.kitPublish/subscribe pattern with wildcard subjects
examples/queue-groups.kitLoad balancing with queue groups
examples/request-reply.kitRequest/reply pattern with echo server
LICENSEMIT license file

Architecture

Pub/Sub Pattern

sequenceDiagram participant Publisher participant NATS Server participant Subscriber1 participant Subscriber2 Subscriber1->>NATS Server: Subscribe "events.*" Subscriber2->>NATS Server: Subscribe "events.*" Publisher->>NATS Server: Publish "events.user" NATS Server->>Subscriber1: Message NATS Server->>Subscriber2: Message

Request/Reply Pattern

sequenceDiagram participant Requester participant NATS Server participant Responder Responder->>NATS Server: Subscribe "service.api" Requester->>NATS Server: Request "service.api" NATS Server->>Responder: Message + Reply Subject Responder->>NATS Server: Publish to Reply Subject NATS Server->>Requester: Response

FFI Structure

graph TD A[Kit Code] -->|import Nats| B[src/main.kit] B -->|extern-zig| C[zig/nats.zig] C --> D[zig/kit_ffi.zig] D --> E[NATS Protocol] E --> F[NATS Server]

Dependencies

No Kit package dependencies.

Installation

kit add gitlab.com/kit-lang/packages/kit-nats.git

Usage

import Kit.Nats

License

MIT License - see LICENSE for details.

Exported Functions & Types

NatsError

NATS error type for typed error handling. Variants distinguish between connection and command errors.

Variants

NatsConnectionError {message}
NatsCommandError {message}