44 lines
1.1 KiB
Go
44 lines
1.1 KiB
Go
|
// Copyright 2016 The Chihaya Authors. All rights reserved.
|
||
|
// Use of this source code is governed by the BSD 2-Clause license,
|
||
|
// which can be found in the LICENSE file.
|
||
|
|
||
|
package varinterval
|
||
|
|
||
|
import (
|
||
|
"gopkg.in/yaml.v2"
|
||
|
|
||
|
"github.com/chihaya/chihaya"
|
||
|
)
|
||
|
|
||
|
// Config represents the configuration for the varinterval middleware.
|
||
|
type Config struct {
|
||
|
// ModifyResponseProbability is the probability by which a response will
|
||
|
// be modified.
|
||
|
ModifyResponseProbability float32 `yaml:"modify_response_probability"`
|
||
|
|
||
|
// MaxIncreaseDelta is the amount of seconds that will be added at most.
|
||
|
MaxIncreaseDelta int `yaml:"max_increase_delta"`
|
||
|
|
||
|
// ModifyMinInterval specifies whether min_interval should be increased
|
||
|
// as well.
|
||
|
ModifyMinInterval bool `yaml:"modify_min_interval"`
|
||
|
}
|
||
|
|
||
|
// newConfig parses the given MiddlewareConfig as a varinterval.Config.
|
||
|
//
|
||
|
// The contents of the config are not checked.
|
||
|
func newConfig(mwcfg chihaya.MiddlewareConfig) (*Config, error) {
|
||
|
bytes, err := yaml.Marshal(mwcfg.Config)
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
|
||
|
var cfg Config
|
||
|
err = yaml.Unmarshal(bytes, &cfg)
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
|
||
|
return &cfg, nil
|
||
|
}
|