factory

package
v0.57.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 12, 2026 License: BSD-2-Clause Imports: 20 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CreateRouterFromConfig added in v0.4.0

func CreateRouterFromConfig(
	ctx context.Context,
	cfg *pkg.Config,
	opts ...RouterOptionFunc,
) (http.Handler, error)

CreateRouterFromConfig builds the HTTP handler tree from a parsed config: per-provider upstream pools (each member its own reverse proxy, token-swap transport, and concurrency limiter), a model-name dispatcher on /v1/, and the canonical admin endpoints (/healthz, /readiness, /metrics, /setloglevel/, /gc). The model router emits its own structured one-line log per request at V(1) (`[req] METHOD path model=... provider=... status=... latency=...`), so no outer logging wrapper is needed — admin endpoints stay quiet.

func CreateServer

func CreateServer(ctx context.Context, listen, configPath string) (librun.Func, error)

CreateServer loads the config at configPath, wires the model router + per-provider proxies, and returns a run.Func that starts the HTTP listener with graceful shutdown on ctx cancel.

func NewReloadRegistry added in v0.46.2

func NewReloadRegistry() *prometheus.Registry

NewReloadRegistry returns the Prometheus registry a reloaded handler tree registers its ccrouter_* collectors on. A bare prometheus.NewRegistry() is empty; seeding it with the standard Go + process collectors (the set DefaultRegisterer carries at startup) keeps go_gc_* / process_* series exposed on /metrics across reloads. /metrics serves the active handler's own registerer (buildMux → promhttp.HandlerFor), so the reloaded counters are scraped immediately after the handler swap.

Types

type RouterOptionFunc added in v0.32.0

type RouterOptionFunc func(*routerOptions)

RouterOptionFunc configures CreateRouterFromConfig beyond the parsed Config. Options are test seams (e.g. an isolated Prometheus registry) that do not belong on the YAML-deserialized Config struct.

func WithCurrentDateTime added in v0.40.0

func WithCurrentDateTime(clock libtime.CurrentDateTimeGetter) RouterOptionFunc

WithCurrentDateTime overrides the clock used for time-window eligibility and the router's timestamps. Defaults to libtime.NewCurrentDateTime(). Tests pass a fixed clock (libtime.NewCurrentDateTime() + SetNow) for deterministic window checks (spec 014).

func WithMetricsRegisterer added in v0.14.0

func WithMetricsRegisterer(reg prometheus.Registerer) RouterOptionFunc

WithMetricsRegisterer overrides the Prometheus registerer used for ccrouter_* metrics. Defaults to prometheus.DefaultRegisterer. Tests pass an isolated registry to avoid racing on the process-global default.

func WithWaiterDuration added in v0.57.0

func WithWaiterDuration(waiter libtime.WaiterDuration) RouterOptionFunc

WithWaiterDuration overrides the waiter that times every member and host limiter's queue wait (maxConcurrentWaitSeconds). Defaults to libtime.NewWaiterDuration(). Tests pass the counterfeiter WaiterDuration mock to decide exactly when a queued request times out instead of sleeping through a real timer.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL