first commit
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
---
|
||||
name: sp-network-plugin-registry
|
||||
description: Network plugin for peer registry — peer entry storage, binary message encoding, and registry synchronisation across mesh. Part of network-plugin-* family.
|
||||
---
|
||||
|
||||
# sp-network-plugin-registry
|
||||
|
||||
| Symbol | Kind | Responsibility |
|
||||
|---|---|---|
|
||||
| `RegistryPlugin` | Class | Network plugin managing peer registry |
|
||||
| `Registry` | Class | Stores and queries peer entries with metadata |
|
||||
| `RegistrySyncManager` | Class | Synchronises registry state across mesh peers |
|
||||
| `BinaryMessageEncoder` | Class | Binary encoder for registry sync messages |
|
||||
| `NETWORK_REG_CODES` | Constant | Error codes via `defineCodes` |
|
||||
| `NetworkRegError` | Class | Typed error with registry codes |
|
||||
| `PeerEntry` | Type | Peer record with id, addresses, capabilities, metadata |
|
||||
|
||||
**File Structure:** `packages/networking/network/network-plugin-registry/src/{registry,sync,encoder,errors}/`
|
||||
|
||||
**Sibling packages:**
|
||||
- `@suaveplan/network` — core network interfaces
|
||||
- `@suaveplan/network-bootstrap` — uses registry for peer discovery
|
||||
|
||||
**Patterns:**
|
||||
|
||||
*Quick Start:*
|
||||
```ts
|
||||
import { RegistryPlugin } from "@suaveplan/network-plugin-registry";
|
||||
const registry = new RegistryPlugin();
|
||||
node.use(registry);
|
||||
```
|
||||
|
||||
*Peer lookup:*
|
||||
```ts
|
||||
import { Registry } from "@suaveplan/network-plugin-registry";
|
||||
const reg = new Registry();
|
||||
reg.add({ id: "peer-1", addresses: ["ws://host:port"], capabilities: ["relay"] });
|
||||
const peer = reg.get("peer-1");
|
||||
```
|
||||
|
||||
*Sync:*
|
||||
```ts
|
||||
import { RegistrySyncManager } from "@suaveplan/network-plugin-registry";
|
||||
const sync = new RegistrySyncManager({ interval: 30000 });
|
||||
```
|
||||
|
||||
**Constraints:**
|
||||
- Implements `NetworkPlugin` from `@suaveplan/network`
|
||||
- `Registry` stores peer entries with id, addresses, capabilities, and last-seen
|
||||
- `RegistrySyncManager` periodically syncs registry deltas to mesh peers
|
||||
- `BinaryMessageEncoder` encodes sync messages for bandwidth efficiency
|
||||
- Peer entries expire after configurable TTL unless refreshed
|
||||
- CRDT-like merge for conflicting peer information
|
||||
- Error codes use `defineCodes` from `@suaveplan/error`
|
||||
|
||||
**Checklist:**
|
||||
- [ ] `RegistryPlugin` implements `NetworkPlugin`
|
||||
- [ ] `Registry` stores and retrieves peer entries
|
||||
- [ ] `RegistrySyncManager` propagates deltas to mesh peers
|
||||
- [ ] `BinaryMessageEncoder` produces compact wire format
|
||||
- [ ] Peer entries expire after TTL unless refreshed
|
||||
- [ ] Conflicts merged deterministically
|
||||
- [ ] Error codes use `defineCodes` from `@suaveplan/error`
|
||||
Reference in New Issue
Block a user