feat: runtime manager
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
package ports
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
)
|
||||
|
||||
// LobbyInternalClient is the synchronous trusted-REST port Runtime
|
||||
// Manager uses to read ancillary game metadata from Game Lobby. Stage
|
||||
// 13 calls GetGame purely for diagnostic context; the start envelope
|
||||
// already carries the only required field (`image_ref`) so a
|
||||
// LobbyInternalClient failure must not abort the start operation.
|
||||
type LobbyInternalClient interface {
|
||||
// GetGame returns the Lobby game record for gameID. It returns
|
||||
// ErrLobbyGameNotFound when no record exists and ErrLobbyUnavailable
|
||||
// for transport / timeout / non-2xx responses.
|
||||
GetGame(ctx context.Context, gameID string) (LobbyGameRecord, error)
|
||||
}
|
||||
|
||||
// LobbyGameRecord stores the subset of the Lobby `GameRecord` schema
|
||||
// Runtime Manager uses. The shape is intentionally minimal: this fetch
|
||||
// is ancillary diagnostics and v1 has no required field. The struct
|
||||
// may be extended additively without breaking existing callers.
|
||||
type LobbyGameRecord struct {
|
||||
// GameID identifies the platform game.
|
||||
GameID string
|
||||
|
||||
// Status stores the verbatim Lobby status string (e.g. `starting`,
|
||||
// `running`, `paused`). Runtime Manager does not interpret it; it
|
||||
// is exposed for log enrichment and diagnostics only.
|
||||
Status string
|
||||
|
||||
// TargetEngineVersion stores the semver of the engine version Lobby
|
||||
// resolved into the start envelope's image_ref. Empty when Lobby
|
||||
// did not return one.
|
||||
TargetEngineVersion string
|
||||
}
|
||||
|
||||
// ErrLobbyGameNotFound reports that the Lobby internal API returned 404
|
||||
// for the requested game id.
|
||||
var ErrLobbyGameNotFound = errors.New("lobby game not found")
|
||||
|
||||
// ErrLobbyUnavailable reports that the Lobby internal API could not be
|
||||
// reached (transport error, timeout, non-2xx response). Callers must
|
||||
// treat the failure as recoverable: Runtime Manager continues the
|
||||
// operation when the call is purely diagnostic.
|
||||
var ErrLobbyUnavailable = errors.New("lobby internal api unavailable")
|
||||
Reference in New Issue
Block a user