Skip to main content

Crate syncular_command

Crate syncular_command 

Source
Expand description

§syncular-command — one JSON command surface over the Rust client core

The command router the conformance shim proved (JSON in, JSON out, bytes as {"$bytes": hex}) factored into a transport-agnostic module so BOTH the stdio conformance shim AND the FFI native core dispatch through the same code. That keeps a single command surface, conformance-locked via the shim: whatever the shim exercises, the FFI core inherits.

The router is generic over the Transport seam. The shim binds it to a stdio host (transport inverted to the harness); the FFI crate binds it to a real native HTTP+WS transport. Everything host-specific — realtime notification draining, deferred requests, event queues — stays in each host; only the pure method → result dispatch (and its JSON parsing) is shared here.

Structs§

CommandError
The structured failure the driver protocol carries in an error. details and retryable carry the typed mutation fields to the host; non-mutation failures leave both at their defaults.
CreateEffects
Parsed side effects of a create command that the host must apply to its own transport/clock (the router stays transport-agnostic). The client is already installed into the Option<SyncClient> slot by dispatch.

Functions§

bytes_to_hex
bytes_value
dispatch
Dispatch one command against the client instance over transport.
hex_to_bytes
parse_encryption
§5.11: parse the encryption config into the client’s portable keyring. Shape: { keys: { "<keyId>": {"$bytes": "<hex>"} }, keyIdColumns: { "<table>": "<column>" } }. Keys are 32 bytes.
parse_headers
Parse an activateSecurity (or rotation) headers param: an object of string values, replacing the transport’s FULL header set. The router validates the shape at the shared chokepoint; each host applies the parsed set to its own transport (the router stays transport-agnostic).
parse_limits
parse_mutations
parse_previous_version_context
RFC 0005 D8: parse the host’s previousVersionContext config with the TS keys and defaults: enabled (default false), maxBytes 8 MiB, maxRows 20000, maxTables 32, maxRowBytes 1 MiB, maxAgeMs 24h. Invalid values fail the request loudly rather than silently defaulting.
value_bytes