Initial Commit
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
# @suaveplan/network-plugin-protocol - Network protocol plugin: 13-byte binary header, message encoder/decoder, pipeline, serialization strategies, priority queue, batching, TTL, and route cache
|
||||
|
||||
## Summary
|
||||
|
||||
Network protocol plugin for the mesh system.
|
||||
|
||||
<!-- begin:auto-docs -->
|
||||
## Documentation tree
|
||||
|
||||
- [batcher](./src/batcher/batcher.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
|
||||
- [batcher](./src/batcher/batcher.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
|
||||
- [decoder](./src/decoder/decoder.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
|
||||
- [decoder](./src/decoder/decoder.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
|
||||
- [encoder](./src/encoder/encoder.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
|
||||
- [encoder](./src/encoder/encoder.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
|
||||
- [pipeline](./src/pipeline/pipeline.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
|
||||
- [pipeline](./src/pipeline/pipeline.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
|
||||
- [protocol](./src/protocol/protocol.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
|
||||
- [protocol-plugin](./src/protocol/protocol-plugin.md) — The main plugin implementation that integrates the protocol layer into a `NetworkNode`. `ProtocolPlugin` implements the…
|
||||
- [protocol](./src/protocol/protocol.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
|
||||
- [queue](./src/queue/queue.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
|
||||
- [queue](./src/queue/queue.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
|
||||
- [serializer](./src/serializer/serializer.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
|
||||
- [serializer](./src/serializer/serializer.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
|
||||
- [ttl](./src/ttl/ttl.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
|
||||
- [ttl](./src/ttl/ttl.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
|
||||
- [error-codes](./src/error-codes.md) — Defines the stable error-code registry for the `@suaveplan/network-plugin-protocol` package. All runtime failures withi…
|
||||
<!-- end:auto-docs --> - [batcher](./src/batcher/batcher.md) — <!-- begin:auto-docs --> _(no submodules)_- [decoder](./src/decoder/decoder.md) — <!-- begin:auto-docs --> _(no submodules)_- [decoder](./src/decoder/decoder.md) — <!-- begin:auto-docs --> _(no submodules)_- [encoder](./src/encoder/encoder.md) — <!-- begin:auto-docs --> _(no submodules)_- [encoder](./src/encoder/encoder.md) — <!-- begin:auto-docs --> _(no submodules)_- [pipeline](./src/pipeline/pipeline.md) — <!-- begin:auto-docs --> _(no submodules)_- [pipeline](./src/pipeline/pipeline.md) — <!-- begin:auto-docs --> _(no submodules)_- [protocol](./src/protocol/protocol.md) — <!-- begin:auto-docs --> _(no submodules)_- [protocol-plugin](./src/protocol/protocol-plugin.md) — The main plugin implementation that integrates the protocol layer into a `NetworkNode`. `ProtocolPlugin` implements the…
|
||||
- [protocol](./src/protocol/protocol.md) — <!-- begin:auto-docs --> _(no submodules)_- [queue](./src/queue/queue.md) — <!-- begin:auto-docs --> _(no submodules)_- [queue](./src/queue/queue.md) — <!-- begin:auto-docs --> _(no submodules)_- [serializer](./src/serializer/serializer.md) — <!-- begin:auto-docs --> _(no submodules)_- [serializer](./src/serializer/serializer.md) — <!-- begin:auto-docs --> _(no submodules)_- [ttl](./src/ttl/ttl.md) — <!-- begin:auto-docs --> _(no submodules)_- [ttl](./src/ttl/ttl.md) — <!-- begin:auto-docs --> _(no submodules)_- [error-codes](./src/error-codes.md) — Defines the stable error-code registry for the `@suaveplan/network-plugin-protocol` package. All runtime failures withi…
|
||||
- [batcher](./src/batcher/batcher.md) — <!-- begin:auto-docs --> _(no submodules)_- [decoder](./src/decoder/decoder.md) — <!-- begin:auto-docs --> _(no submodules)_- [decoder](./src/decoder/decoder.md) — <!-- begin:auto-docs --> _(no submodules)_- [encoder](./src/encoder/encoder.md) — <!-- begin:auto-docs --> _(no submodules)_- [encoder](./src/encoder/encoder.md) — <!-- begin:auto-docs --> _(no submodules)_- [pipeline](./src/pipeline/pipeline.md) — <!-- begin:auto-docs --> _(no submodules)_- [pipeline](./src/pipeline/pipeline.md) — <!-- begin:auto-docs --> _(no submodules)_- [protocol](./src/protocol/protocol.md) — <!-- begin:auto-docs --> _(no submodules)_- [protocol-plugin](./src/protocol/protocol-plugin.md) — The main plugin implementation that integrates the protocol layer into a `NetworkNode`. `ProtocolPlugin` implements the…
|
||||
- [protocol](./src/protocol/protocol.md) — <!-- begin:auto-docs --> _(no submodules)_- [queue](./src/queue/queue.md) — <!-- begin:auto-docs --> _(no submodules)_- [queue](./src/queue/queue.md) — <!-- begin:auto-docs --> _(no submodules)_- [serializer](./src/serializer/serializer.md) — <!-- begin:auto-docs --> _(no submodules)_- [serializer](./src/serializer/serializer.md) — <!-- begin:auto-docs --> _(no submodules)_- [ttl](./src/ttl/ttl.md) — <!-- begin:auto-docs --> _(no submodules)_- [ttl](./src/ttl/ttl.md) — <!-- begin:auto-docs --> _(no submodules)_- [error-codes](./src/error-codes.md) — Defines the stable error-code registry for the `@suaveplan/network-plugin-protocol` package. All runtime failures withi…
|
||||
- [batcher](./src/batcher/batcher.md) — <!-- begin:auto-docs --> _(no submodules)_- [decoder](./src/decoder/decoder.md) — <!-- begin:auto-docs --> _(no submodules)_- [decoder](./src/decoder/decoder.md) — <!-- begin:auto-docs --> _(no submodules)_- [encoder](./src/encoder/encoder.md) — <!-- begin:auto-docs --> _(no submodules)_- [encoder](./src/encoder/encoder.md) — <!-- begin:auto-docs --> _(no submodules)_- [pipeline](./src/pipeline/pipeline.md) — <!-- begin:auto-docs --> _(no submodules)_- [pipeline](./src/pipeline/pipeline.md) — <!-- begin:auto-docs --> _(no submodules)_- [protocol](./src/protocol/protocol.md) — <!-- begin:auto-docs --> _(no submodules)_- [protocol-plugin](./src/protocol/protocol-plugin.md) — The main plugin implementation that integrates the protocol layer into a `NetworkNode`. `ProtocolPlugin` implements the…
|
||||
- [protocol](./src/protocol/protocol.md) — <!-- begin:auto-docs --> _(no submodules)_- [queue](./src/queue/queue.md) — <!-- begin:auto-docs --> _(no submodules)_- [queue](./src/queue/queue.md) — <!-- begin:auto-docs --> _(no submodules)_- [serializer](./src/serializer/serializer.md) — <!-- begin:auto-docs --> _(no submodules)_- [serializer](./src/serializer/serializer.md) — <!-- begin:auto-docs --> _(no submodules)_- [ttl](./src/ttl/ttl.md) — <!-- begin:auto-docs --> _(no submodules)_- [ttl](./src/ttl/ttl.md) — <!-- begin:auto-docs --> _(no submodules)_- [error-codes](./src/error-codes.md) — Defines the stable error-code registry for the `@suaveplan/network-plugin-protocol` package. All runtime failures withi…
|
||||
- [batcher](./src/batcher/batcher.md) — <!-- begin:auto-docs --> _(no submodules)_- [decoder](./src/decoder/decoder.md) — <!-- begin:auto-docs --> _(no submodules)_ - [decoder](./src/decoder/decoder.md) — <!-- begin:auto-docs --> _(no submodules)_- [encoder](./src/encoder/encoder.md) — <!-- begin:auto-docs --> _(no submodules)_ - [encoder](./src/encoder/encoder.md) — <!-- begin:auto-docs --> _(no submodules)_- [pipeline](./src/pipeline/pipeline.md) — <!-- begin:auto-docs --> _(no submodules)_ - [pipeline](./src/pipeline/pipeline.md) — <!-- begin:auto-docs --> _(no submodules)_- [protocol](./src/protocol/protocol.md) — <!-- begin:auto-docs --> _(no submodules)_ - [protocol-plugin](./src/protocol/protocol-plugin.md) — The main plugin implementation that integrates the protocol layer into a `NetworkNode`. `ProtocolPlugin` implements the…
|
||||
- [protocol](./src/protocol/protocol.md) — <!-- begin:auto-docs --> _(no submodules)_- [queue](./src/queue/queue.md) — <!-- begin:auto-docs --> _(no submodules)_ - [queue](./src/queue/queue.md) — <!-- begin:auto-docs --> _(no submodules)_- [serializer](./src/serializer/serializer.md) — <!-- begin:auto-docs --> _(no submodules)_ - [serializer](./src/serializer/serializer.md) — <!-- begin:auto-docs --> _(no submodules)_- [ttl](./src/ttl/ttl.md) — <!-- begin:auto-docs --> _(no submodules)_ - [ttl](./src/ttl/ttl.md) — <!-- begin:auto-docs --> _(no submodules)_- [error-codes](./src/error-codes.md) — Defines the stable error-code registry for the `@suaveplan/network-plugin-protocol` package. All runtime failures withi…
|
||||
|
||||
## Purpose
|
||||
|
||||
Implements the compact binary protocol layer for all peer-to-peer messages. This plugin provides the 13-byte binary header, message encoder/decoder, serialization strategy framework, priority message queueing, adaptive batching, TTL/loop detection, and transform pipeline. It plugs into `NetworkNode` via the `NetworkPlugin` interface.
|
||||
|
||||
## Features
|
||||
|
||||
- **13-byte binary header** — version, flags, message type, timestamp, payload length
|
||||
- **MessageEncoder / MessageDecoder** — wire-format serialization
|
||||
- **SerializerFactory** — JSON, binary, and MessagePack strategies with fallback
|
||||
- **PriorityMessageQueue** — 5-tier priority with CRITICAL bypass
|
||||
- **MessageBatcher** — groups messages by type/target, flushes on size/time
|
||||
- **MessageTTL / LoopDetector** — prevents infinite propagation and cycles
|
||||
- **ProtocolPipeline** — ordered transform stages for outgoing and incoming data
|
||||
|
||||
## Usage
|
||||
|
||||
### Basic Example
|
||||
|
||||
```ts
|
||||
import { ProtocolPlugin } from "@suaveplan/network-plugin-protocol";
|
||||
|
||||
const plugin = new ProtocolPlugin();
|
||||
node.use(plugin);
|
||||
```
|
||||
|
||||
### Advanced Example
|
||||
|
||||
```ts
|
||||
import { ProtocolPlugin, PriorityMessageQueue } from "@suaveplan/network-plugin-protocol";
|
||||
|
||||
const plugin = new ProtocolPlugin({
|
||||
queue: { capacity: 2000, policy: "drop-oldest" },
|
||||
batch: { maxSize: 50, maxWaitMs: 25, priorityTrigger: "HIGH" },
|
||||
});
|
||||
node.use(plugin);
|
||||
```
|
||||
|
||||
## API Reference
|
||||
|
||||
See per-module documentation in `src/`:
|
||||
|
||||
- `src/protocol/` — `BinaryProtocol`, `ProtocolPlugin`
|
||||
- `src/encoder/` — `MessageEncoder`
|
||||
- `src/decoder/` — `MessageDecoder`
|
||||
- `src/serializer/` — `SerializerFactory`, `JsonSerializer`, `BinarySerializer`, `MessagePackSerializer`
|
||||
- `src/queue/` — `PriorityMessageQueue`
|
||||
- `src/batcher/` — `MessageBatcher`
|
||||
- `src/ttl/` — `MessageTTL`, `LoopDetector`
|
||||
- `src/pipeline/` — `ProtocolPipeline`
|
||||
|
||||
## Implementation Notes
|
||||
|
||||
The protocol plugin is transport-agnostic. It serializes envelopes to byte arrays but does not send them over the wire. Transports consume the encoded bytes and handle actual delivery. The bitpacker integration uses `@suaveplan/bitpacker` for header field packing. The pipeline integrates with `@suaveplan/streams` transforms for compression and encryption.
|
||||
Reference in New Issue
Block a user