reloader

package module
v1.4.0 Latest Latest
Warning

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

Go to latest
Published: Jul 27, 2023 License: BSD-3-Clause Imports: 9 Imported by: 0

README

go-cfg-reloader

JSON config reloader

// app config struct
type App struct {
	Host    string
	Port    string
	Key     string
	Pass    string
}

basePath := "/usr/local/app/settings/"

reloader := reloader.New(
    []string{
        filepath.Join(basePath, "app-default.json"),
    },
    func(err error) { fmt.Println(err) },
)

// config handler called when config reloaded
cfgHandler := func(key string, data json.RawMessage) {
    obj := new(App)
    if err := json.Unmarshal(data, &obj); err != nil {
        // handle error
    }
    // got config data under "app" json key
}

reloader.KeyAdd("app", cfgHandler)
reloader.Start()

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type CallbackFunc added in v1.4.0

type CallbackFunc[T any] func(oldConfig, curConfig T)

CallbackFunc is a func called on config changed

type ConfigReloader added in v1.4.0

type ConfigReloader[T any] struct {
	// contains filtered or unexported fields
}

ConfigReloader - the config reloader service

func New

func New[T any](
	files []string,
	batchTime time.Duration,
	logger Logger,
) *ConfigReloader[T]

New return service object

func (*ConfigReloader[T]) Config added in v1.4.0

func (s *ConfigReloader[T]) Config() T

Config returns current config should not be used in callback (deadlock)

func (*ConfigReloader[T]) ForceReload added in v1.4.0

func (s *ConfigReloader[T]) ForceReload() error

ForceReload ...

func (*ConfigReloader[T]) ReloadTime added in v1.4.0

func (s *ConfigReloader[T]) ReloadTime() time.Time

ReloadTime returns last time config was changed

func (*ConfigReloader[T]) Start added in v1.4.0

func (s *ConfigReloader[T]) Start(ctx context.Context) error

Start ...

func (*ConfigReloader[T]) Subscribe added in v1.4.0

func (s *ConfigReloader[T]) Subscribe(cb CallbackFunc[T]) error

type Logger added in v1.4.0

type Logger interface {
	Info(...interface{})
	Error(...interface{})
}

Logger is the interface service uses for logging

Jump to

Keyboard shortcuts

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