44 lines
1.9 KiB
Go
44 lines
1.9 KiB
Go
// Package engineclient is the trusted-internal HTTP client `internal/runtime`
|
|
// uses to talk to a running `galaxy-game` engine container. The engine
|
|
// contract is the OpenAPI document shipped with the engine module
|
|
// (`galaxy/game/openapi.yaml`); this package reuses the existing typed
|
|
// DTOs in `pkg/model/{rest,order,report}` rather than introducing its
|
|
// own request/response types.
|
|
//
|
|
// The engine endpoint URL is per-call: the runtime stores it on
|
|
// `runtime_records.engine_endpoint` (the value the dockerclient adapter
|
|
// returns from Run). The client therefore does not bind a base URL at
|
|
// construction time — only the per-call timeouts are wired through
|
|
// `Config`.
|
|
//
|
|
// Error model:
|
|
//
|
|
// - ErrEngineUnreachable — network failure, 5xx, or timeout. The
|
|
// caller transitions the runtime record to `engine_unreachable`
|
|
// and re-tries on the next snapshot tick.
|
|
// - ErrEngineValidation — engine rejected the request (HTTP 4xx).
|
|
// The caller surfaces the engine's body verbatim through to the
|
|
// user.
|
|
// - ErrEngineProtocolViolation — engine returned an empty body or a
|
|
// malformed JSON response on a path that requires one.
|
|
package engineclient
|
|
|
|
import "errors"
|
|
|
|
var (
|
|
// ErrEngineUnreachable means the engine call failed because of a
|
|
// transport error (network, DNS, connect refused, timeout, 5xx).
|
|
// The implementation callers map this to a runtime status of
|
|
// `engine_unreachable` after a snapshot read.
|
|
ErrEngineUnreachable = errors.New("engineclient: engine unreachable")
|
|
|
|
// ErrEngineValidation means the engine returned a 4xx response.
|
|
// Callers forward the engine body so end users see the engine's
|
|
// per-command error reason verbatim.
|
|
ErrEngineValidation = errors.New("engineclient: engine validation failed")
|
|
|
|
// ErrEngineProtocolViolation means the engine returned an empty or
|
|
// malformed body on a path that contractually requires one.
|
|
ErrEngineProtocolViolation = errors.New("engineclient: engine protocol violation")
|
|
)
|