Documentation
¶
Overview ¶
Package app provides the main application struct for centralized dependency management and lifecycle control of the GoModel server.
Index ¶
- type App
- func (a *App) AuditLogger() auditlog.LoggerInterface
- func (a *App) RefreshRuntime(ctx context.Context) (admin.RuntimeRefreshReport, error)
- func (a *App) Router() core.RoutableProvider
- func (a *App) Shutdown(ctx context.Context) error
- func (a *App) Start(ctx context.Context, addr string) error
- func (a *App) StartWithListener(ctx context.Context, listener net.Listener) error
- func (a *App) UsageLogger() usage.LoggerInterface
- type Config
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type App ¶
type App struct {
// contains filtered or unexported fields
}
App represents the main application with all its dependencies. It provides centralized lifecycle management for all components.
func New ¶
New creates a new App with all dependencies initialized. The caller must call Shutdown to release resources.
func (*App) AuditLogger ¶
func (a *App) AuditLogger() auditlog.LoggerInterface
AuditLogger returns the audit logger interface.
func (*App) RefreshRuntime ¶
RefreshRuntime performs a manual runtime refresh for admin-triggered actions. It refreshes provider/model metadata and DB-backed in-memory snapshots without touching exact or semantic response caches.
func (*App) Router ¶
func (a *App) Router() core.RoutableProvider
Router returns the core.RoutableProvider for request routing.
func (*App) Shutdown ¶
Shutdown gracefully tears down app components in dependency order:
- Close long-lived streams (ownedByPrologue), so they do not hold the HTTP drain open, then cancel the server context and wait for it to stop.
- Close server-owned resources (ownedByServer) now that no request is in flight.
- Close the remaining subsystems in the order given by shutdownOrder.
Shutdown is idempotent and safe for repeated calls; after the first call, subsequent calls are no-ops. It attempts every close step, aggregates failures, and returns a joined error if any step fails.
func (*App) Start ¶
Start starts the HTTP server on the given address. This is a blocking call that returns when the server stops.
func (*App) StartWithListener ¶
StartWithListener starts the HTTP server on a pre-bound listener. This is primarily useful for tests that need to reserve a loopback port before handing control to the server.
func (*App) UsageLogger ¶
func (a *App) UsageLogger() usage.LoggerInterface
UsageLogger returns the usage logger interface.
type Config ¶
type Config struct {
// AppConfig holds the loaded application configuration and raw provider data
// produced by config.Load.
AppConfig *config.LoadResult
// Factory provides the ProviderFactory used to construct provider instances.
Factory *providers.ProviderFactory
// Extensions optionally carries registered gateway extensions (request
// rewriters, middleware, routes). The registry is snapshotted here; later
// registrations have no effect.
Extensions *ext.Registry
// DemoMode exposes a prominent dashboard warning for public demo instances.
// It does not change persistence or security behavior.
DemoMode bool
}
Config holds the configuration options for creating an App.