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
No related branches found
No related tags found
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.
Finish editing this message first!
Please register or to comment