good morning!!!!

Skip to content
Snippets Groups Projects
Commit ce7f3697 authored by Garet Halliday's avatar Garet Halliday
Browse files

load critics from json

parent dff23a14
Branches
Tags
No related merge requests found
...@@ -62,6 +62,9 @@ type Config struct { ...@@ -62,6 +62,9 @@ type Config struct {
// TrackedParameters are parameters which should be synced by updating the server, not the client. // TrackedParameters are parameters which should be synced by updating the server, not the client.
TrackedParameters []strutil.CIString `json:"tracked_parameters,omitempty"` TrackedParameters []strutil.CIString `json:"tracked_parameters,omitempty"`
RawCritics []json.RawMessage `json:"critics,omitempty" caddy:"namespace=pggat.handlers.pool.critics inline_key=critic"`
Critics []pool.Critic `json:"-"`
Logger *zap.Logger `json:"-"` Logger *zap.Logger `json:"-"`
} }
...@@ -75,6 +78,8 @@ func (T Config) Spool() spool.Config { ...@@ -75,6 +78,8 @@ func (T Config) Spool() spool.Config {
ReconnectInitialTime: time.Duration(T.ServerReconnectInitialTime), ReconnectInitialTime: time.Duration(T.ServerReconnectInitialTime),
ReconnectMaxTime: time.Duration(T.ServerReconnectMaxTime), ReconnectMaxTime: time.Duration(T.ServerReconnectMaxTime),
Critics: T.Critics,
Logger: T.Logger, Logger: T.Logger,
} }
} }
......
package basic package basic
import ( import (
"fmt"
"github.com/caddyserver/caddy/v2" "github.com/caddyserver/caddy/v2"
"gfx.cafe/gfx/pggat/lib/gat/handlers/pool" "gfx.cafe/gfx/pggat/lib/gat/handlers/pool"
...@@ -26,6 +28,19 @@ func (T *Factory) CaddyModule() caddy.ModuleInfo { ...@@ -26,6 +28,19 @@ func (T *Factory) CaddyModule() caddy.ModuleInfo {
func (T *Factory) Provision(ctx caddy.Context) error { func (T *Factory) Provision(ctx caddy.Context) error {
T.Logger = ctx.Logger() T.Logger = ctx.Logger()
if T.RawCritics != nil {
raw, err := ctx.LoadModule(T, "RawCritics")
if err != nil {
return fmt.Errorf("loading critic module: %v", err)
}
val := raw.([]any)
T.Critics = make([]pool.Critic, 0, len(val))
for _, vv := range val {
T.Critics = append(T.Critics, vv.(pool.Critic))
}
}
raw, err := ctx.LoadModule(T, "RawPoolerFactory") raw, err := ctx.LoadModule(T, "RawPoolerFactory")
if err != nil { if err != nil {
return err return err
......
package hybrid package hybrid
import ( import (
"encoding/json"
"time" "time"
"github.com/caddyserver/caddy/v2" "github.com/caddyserver/caddy/v2"
"go.uber.org/zap" "go.uber.org/zap"
"gfx.cafe/gfx/pggat/lib/gat/handlers/pool"
"gfx.cafe/gfx/pggat/lib/gat/handlers/pool/poolers/rob" "gfx.cafe/gfx/pggat/lib/gat/handlers/pool/poolers/rob"
"gfx.cafe/gfx/pggat/lib/gat/handlers/pool/spool" "gfx.cafe/gfx/pggat/lib/gat/handlers/pool/spool"
"gfx.cafe/gfx/pggat/lib/util/strutil" "gfx.cafe/gfx/pggat/lib/util/strutil"
...@@ -19,6 +21,9 @@ type Config struct { ...@@ -19,6 +21,9 @@ type Config struct {
TrackedParameters []strutil.CIString `json:"tracked_parameters,omitempty"` TrackedParameters []strutil.CIString `json:"tracked_parameters,omitempty"`
RawCritics []json.RawMessage `json:"critics,omitempty" caddy:"namespace=pggat.handlers.pool.critics inline_key=critic"`
Critics []pool.Critic `json:"-"`
Logger *zap.Logger `json:"-"` Logger *zap.Logger `json:"-"`
} }
...@@ -31,6 +36,8 @@ func (T Config) Spool() spool.Config { ...@@ -31,6 +36,8 @@ func (T Config) Spool() spool.Config {
ReconnectInitialTime: time.Duration(T.ServerReconnectInitialTime), ReconnectInitialTime: time.Duration(T.ServerReconnectInitialTime),
ReconnectMaxTime: time.Duration(T.ServerReconnectMaxTime), ReconnectMaxTime: time.Duration(T.ServerReconnectMaxTime),
Critics: T.Critics,
Logger: T.Logger, Logger: T.Logger,
} }
} }
package hybrid package hybrid
import ( import (
"fmt"
"github.com/caddyserver/caddy/v2" "github.com/caddyserver/caddy/v2"
"gfx.cafe/gfx/pggat/lib/gat/handlers/pool" "gfx.cafe/gfx/pggat/lib/gat/handlers/pool"
...@@ -26,6 +28,19 @@ func (T *Factory) CaddyModule() caddy.ModuleInfo { ...@@ -26,6 +28,19 @@ func (T *Factory) CaddyModule() caddy.ModuleInfo {
func (T *Factory) Provision(ctx caddy.Context) error { func (T *Factory) Provision(ctx caddy.Context) error {
T.Logger = ctx.Logger() T.Logger = ctx.Logger()
if T.RawCritics != nil {
raw, err := ctx.LoadModule(T, "RawCritics")
if err != nil {
return fmt.Errorf("loading critic module: %v", err)
}
val := raw.([]any)
T.Critics = make([]pool.Critic, 0, len(val))
for _, vv := range val {
T.Critics = append(T.Critics, vv.(pool.Critic))
}
}
return nil return nil
} }
......
...@@ -32,12 +32,14 @@ func (T *And) CaddyModule() caddy.ModuleInfo { ...@@ -32,12 +32,14 @@ func (T *And) CaddyModule() caddy.ModuleInfo {
func (T *And) Provision(ctx caddy.Context) error { func (T *And) Provision(ctx caddy.Context) error {
T.and = make([]gat.Matcher, 0, len(T.And)) T.and = make([]gat.Matcher, 0, len(T.And))
if T.And != nil { if T.And != nil {
val, err := ctx.LoadModule(T, "And") raw, err := ctx.LoadModule(T, "And")
if err != nil { if err != nil {
return fmt.Errorf("loading matcher module: %v", err) return fmt.Errorf("loading matcher module: %v", err)
} }
for _, vv := range val.([]any) { val := raw.([]any)
T.and = make([]gat.Matcher, 0, len(val))
for _, vv := range val {
T.and = append(T.and, vv.(gat.Matcher)) T.and = append(T.and, vv.(gat.Matcher))
} }
} }
......
...@@ -32,12 +32,14 @@ func (T *Or) CaddyModule() caddy.ModuleInfo { ...@@ -32,12 +32,14 @@ func (T *Or) CaddyModule() caddy.ModuleInfo {
func (T *Or) Provision(ctx caddy.Context) error { func (T *Or) Provision(ctx caddy.Context) error {
T.or = make([]gat.Matcher, 0, len(T.Or)) T.or = make([]gat.Matcher, 0, len(T.Or))
if T.Or != nil { if T.Or != nil {
val, err := ctx.LoadModule(T, "Or") raw, err := ctx.LoadModule(T, "Or")
if err != nil { if err != nil {
return fmt.Errorf("loading matcher module: %v", err) return fmt.Errorf("loading matcher module: %v", err)
} }
for _, vv := range val.([]any) { val := raw.([]any)
T.or = make([]gat.Matcher, 0, len(val))
for _, vv := range val {
T.or = append(T.or, vv.(gat.Matcher)) T.or = append(T.or, vv.(gat.Matcher))
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment