Skip to main content

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

sync_state_bridge-1.0.0.tar.gz (12.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sync_state_bridge-1.0.0-py3-none-any.whl (12.3 kB view details)

Uploaded Python 3

File details

Details for the file sync_state_bridge-1.0.0.tar.gz.

File metadata

  • Download URL: sync_state_bridge-1.0.0.tar.gz
  • Upload date:
  • Size: 12.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.13

File hashes

Hashes for sync_state_bridge-1.0.0.tar.gz
Algorithm Hash digest
SHA256 436d31ec95fca009316d67d834ab8513e55c9d4207b90d933c5a6333037791b6
MD5 e6ae1737199ae670259dd47dece07a64
BLAKE2b-256 d0b7b041e90521d5c880eae663a7f538036889eee779eec62673118f667b906c

See more details on using hashes here.

File details

Details for the file sync_state_bridge-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for sync_state_bridge-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 83f1be35f4a57c94c3eddc6d0ef101eb11b5782d8cdc39f58c693a00ec1f4152
MD5 6dd968f8dc2bf848beef1b6da00954cd
BLAKE2b-256 dc4136d9ecbcdfe67f2351affcedaa16a070d14fe85b03fab67e960d25227378

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page