Skip to main content

Crate gled_protocol

Crate gled_protocol 

Source
Expand description

What gled’s user interfaces and its engine send each other: actions that change the show, and the messages of the connection between them. Shared by the engine, the desktop app and the browser interface, so it compiles for the web.

Modules§

action
Actions: every change to the show, from any source. User interfaces, OSC and MIDI enqueue them; the engine applies them.
assets
The asset collections on the wire. An interface gets every asset when it connects, then only the assets that changed or were deleted. It saves and deletes assets through the engine, which writes them to the repository.
bytes
Bytes that MessagePack sends as one binary blob instead of a list of numbers, shared so a frame is not copied for every client.
codec
Messages on the wire: MessagePack with field names, so a field added with #[serde(default)] keeps older peers working the same way as the JSON asset files do.
message
The messages of a connection between a remote user interface and the engine, over a WebSocket. The interface opens with Hello; the server answers Welcome or Rejected, then sends the state whenever it changes.
midi
MIDI tools of the interface that run in the engine: the monitor of incoming traffic and the test outputs for configuring controllers.
project_update
Project changes on the wire. A whole project is tens of KB, mostly the scene grid and the patch; an edit usually touches one scene. So after the first full state, an interface gets only the scenes that changed, the patch when it changed, and the rest of the project when any of it changed.
replica
What a remote interface knows of the engine, rebuilt from the server’s messages.
state
What the engine publishes to its user interfaces, and what they send it besides actions. In-process the desktop app gets these over channels; remote interfaces get them as messages.