RemoteMessage

sealed interface RemoteMessage(source)

Typed messages carried over an already established player connection. Session and sequence validation belongs to the connection/session owners, not the byte decoder.

Inheritors

Types

Link copied to clipboard
data class Acknowledgement(val session: Long, val sequence: Long, val revision: Long) : RemoteMessage

Confirms the largest processed action sequence and its authoritative resulting revision.

Link copied to clipboard
data class Action(val session: Long, val sequence: Long, val endpoint: Long, val type: ProjectionType, val value: ProjectionValue) : RemoteMessage

Requests one registered typed action; the server authenticates its endpoint and sequence.

Link copied to clipboard
data class Applied(val session: Long, val revision: Long) : RemoteMessage

Confirms that the client validated and atomically installed a complete declaration revision. This is not proof that a frame was presented or that an operator saw it.

Link copied to clipboard
data class Close(val session: Long, val reason: RemoteFailure) : RemoteMessage

Ends one session, releasing both endpoints' retained references.

Link copied to clipboard
data class Control(val session: Long, val state: RuntimeUiControl) : RemoteMessage

Server-ordered control request; declaration state and session identity remain unchanged.

Link copied to clipboard
data class ControlApplied(val session: Long, val sequence: Long, val rejection: UiRejection? = null) : RemoteMessage

Native presentation/input application result, independent of declaration and framebuffer acknowledgements.

Link copied to clipboard
data class ControlReceipt(val session: Long, val sequence: Long, val rejection: UiRejection? = null) : RemoteMessage

Confirms admission of a client intent after any resulting server control, including no-op requests.

Link copied to clipboard
data class ControlRequest(val session: Long, val state: RuntimeUiControl) : RemoteMessage

Authenticated client intent, ordered independently and sequenced by the owning server session.

Link copied to clipboard
class Hello(val protocol: Int, val limits: RemoteLimits, types: Set<ProjectionType>) : RemoteMessage

Negotiates the supported protocol and exact extension schemas before any screen is opened.

Link copied to clipboard
data class Resynchronize(val session: Long) : RemoteMessage

Requests a fresh snapshot without replaying any actions.

Link copied to clipboard
data class Snapshot(val session: Long, val revision: Long, val title: ProjectionValue, val tree: RemoteTree, val pausesGame: Boolean = false, val settings: RemoteUiSettings = RemoteUiSettings(), val control: RuntimeUiControl? = null) : RemoteMessage

Opens or resynchronizes one complete screen; title is an unresolved typed text projection.

Link copied to clipboard
data class Update(val session: Long, val baseRevision: Long, val revision: Long, val patch: RemotePatch) : RemoteMessage

Applies one atomic difference only when the client's committed revision matches baseRevision.

Properties

Link copied to clipboard
abstract val session: Long?

Terminal queue owner, or null for a connection-level greeting.