Versioned delta-state synchronization engine for real-time systems, IPC, and embedded applications
Project description
sync-state-bridge
A deterministic, race‑safe state synchronisation bridge for real‑time applications, with built‑in QoS, backpressure handling, and network resilience.
- Versioned, per‑type sync – each entity type has its own version history.
- Segmented deltas – send only what changed, with a manifest first.
- FSM lifecycle – correct handling of add→update→delete sequences.
- Resilient reconnection – out‑of‑order drop, monotonicity guards, schema mismatch handling.
- Quality of Service (QoS) – define drop policies (CRITICAL, CONFLATABLE, BEST_EFFORT) per entity type.
- Backpressure‑aware transports – bounded queues, priority full‑snapshot injection, congestion metrics.
- Reconnecting client – exponential backoff, version tracking, automatic recovery.
- Pure Python + JS – no binary dependencies.
Quick Start
Install the server package:
pip install sync-state-bridge
For optional features (faster JSON, serial transport):
pip install sync-state-bridge[fast,serial]
Basic Usage
from sync_state import StateSync, Presets
sync = StateSync()
# Register a snapshot provider with a QoS profile
sync.register_snapshot_provider(
"vehicles",
get_vehicles,
qos=Presets.low_bandwidth() # optimised for slow links
)
# After changes:
sync.mark_dirty("vehicles")
await sync.commit()
# Stream deltas over HTTP (SSE)
from fastapi import FastAPI, StreamingResponse
app = FastAPI()
@app.get("/stream")
async def stream(versions: str = "{}"):
return StreamingResponse(
sync.stream_deltas(json.loads(versions)),
media_type="text/event-stream"
)
Socket Server (for low‑level IPC)
from sync_state.transports import StateSyncSocketServer
server = StateSyncSocketServer(sync)
await server.start_tcp(host="0.0.0.0", port=8765)
Reconnecting Client
from sync_state import StateSyncSocketClient
def handle_delta(delta):
print(f"Update: {delta}")
client = StateSyncSocketClient(
host="127.0.0.1",
port=8765,
on_delta_callback=handle_delta
)
await client.connect_and_listen()
Quality of Service (QoS)
Each entity type can have a QoS profile:
| Policy | Behaviour |
|---|---|
CRITICAL |
Never dropped; queued until delivered. |
CONFLATABLE |
Intermediate deltas dropped; only the latest is sent (ideal for high‑frequency telemetry). |
BEST_EFFORT |
Discarded immediately under queue pressure. |
Pre‑configured profiles (Presets.conservative(), Presets.low_bandwidth(), Presets.high_throughput()) are provided.
Testing
Run the unit tests:
pytest tests/
The test suite covers:
- Deterministic hashing (
canonical_hash) - Commit & delta generation
- Version‑gap full‑snapshot recovery
Demos
- Chat – real‑time message broadcast with shared history.
- Game – "Find the Clusters" demonstrating turn‑based sync.
Run the demos:
cd examples/chat && python server.py
cd examples/game && python server.py
Protocol
See PROTOCOL.md for the full SSE‑based delta protocol.
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sync_state_bridge-1.0.2.tar.gz.
File metadata
- Download URL: sync_state_bridge-1.0.2.tar.gz
- Upload date:
- Size: 12.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c327e91f0693f985a2e0e372a066db799cb6fd6beb6032960064c0514e14c9a8
|
|
| MD5 |
8231f5bfb7ae899695b543e5814e75b4
|
|
| BLAKE2b-256 |
e76f163a1136b69e9bd91d8c6bcdbcd3c03ecb5c7404e512874e61d41992b365
|
File details
Details for the file sync_state_bridge-1.0.2-py3-none-any.whl.
File metadata
- Download URL: sync_state_bridge-1.0.2-py3-none-any.whl
- Upload date:
- Size: 12.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7839546898f0efeb5e921df8ab4b8b0338d110b51a1b892e4f306c96f8a6ba73
|
|
| MD5 |
b223f240c739df09d08b6aa104615eaf
|
|
| BLAKE2b-256 |
74d2ab6a2ca278f2e1ceba571c791535cd3b980b7f0dabb6d7c32b26b20c021a
|