- A request that timed out was said as "the controller was not reached, nothing ran", though the line may have run. The engine now follows a line the controller answers as running, by its call, until it ends; when no answer comes in time it says the line may have run and names the call. "Nothing ran" is said only of a request no controller took. - One account could hold the socket: accepting waited for a free slot, and a connection could stall before its deadline was set. The deadline is set at accept, before any lookup; each user id has two lines at once and the machine eight, and one over is answered busy at once. - A container running with the operator's user id shares the number, not the machine: a peer whose mount or user namespace is not the engine's is refused, and nothing is asked. SDK pinned at the go/cli branch's newest commit until go/v0.1.9 is tagged.
26 lines
1021 B
Go
26 lines
1021 B
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
|
|
"git.novox.be/novox/mesh-sdk/go/cli"
|
|
"github.com/novox/mesh-host/internal/link"
|
|
"github.com/novox/mesh-host/internal/meshcli"
|
|
)
|
|
|
|
// serveMeshCLI answers mesh-cli on this machine for as long as this engine serves (novox/hq ADR 0272): the account
|
|
// from the kernel, the line asked of the controller over the link open at the time. A socket that cannot be served
|
|
// is said once, and this engine goes on applying; mesh-cli then says the engine does not answer.
|
|
func serveMeshCLI(ctx context.Context, queue *link.Queue, say func(string)) {
|
|
if err := meshcli.Serve(ctx, cli.Socket, forwardOver(queue), say); err != nil {
|
|
say("mesh-cli is not answered on this machine: " + err.Error())
|
|
}
|
|
}
|
|
|
|
// forwardOver asks the controller over the queue's link, and follows the line to what came of it.
|
|
func forwardOver(queue *link.Queue) meshcli.Forward {
|
|
return func(ctx context.Context, asked meshcli.Asked) cli.Answer {
|
|
return meshcli.AskTheController(ctx, queue.AskController, asked)
|
|
}
|
|
}
|