RemoteSessionServer

Serves the sessions of this node to one peer, with one RemoteDriverHost per session (trove-parts §TPN-11).

Inherits QObject
Group libllm

Declared in src/libs/libllm/llm/comms/RemoteSessionServer.hpp.

Detailed description

The server answers the peer's capability query with its advertisement. For each `open`, it asks its DriverMaker for a driver that resumes the provider session of the open, binds a new RemoteDriverHost to the session, and starts the driver. A second `open` for a session that is open changes nothing. When the server cannot make or start a driver, the peer receives a failed turn with the reason, because the protocol has no frame for a refused open and a silent refusal leaves the peer waiting.

The courier does not keep the order of its messages. An operation for a session that is not open yet, a prompt for example, waits for the open of that session for at most kEarlyHoldMs, and then runs on the new session in the order that it arrived.

A turn finisher (setTurnFinisher()) runs after each completed turn of a session, and the peer learns that the turn ended when it is done. The door host pushes the lane's branch there (trove-parts §TPL-5).

See also RemoteDriverHost, RemoteNodeDriver, LLMCourier.

In this section