Peter Kurfer
9236a38be0
- introduce new endpoints module - introduce Endpoint and EndpointManager - introduce new Logging abstraction API to allow proper mocking - add error return value to Start and Shutdown of endpoints - add mocks of some internals to allow easier testing - add generate target to take care of all code generation
48 lines
1.1 KiB
Go
48 lines
1.1 KiB
Go
package config
|
|
|
|
import (
|
|
"github.com/spf13/viper"
|
|
)
|
|
|
|
type MultiHandlerConfig interface {
|
|
HandlerName() string
|
|
ListenAddress() string
|
|
Ports() []uint16
|
|
Options() *viper.Viper
|
|
HandlerConfigs() []HandlerConfig
|
|
}
|
|
|
|
type multiHandlerConfig struct {
|
|
handlerName string
|
|
ports []uint16
|
|
listenAddress string
|
|
options *viper.Viper
|
|
}
|
|
|
|
func NewMultiHandlerConfig(handlerName string, ports []uint16, listenAddress string, options *viper.Viper) MultiHandlerConfig {
|
|
return &multiHandlerConfig{handlerName: handlerName, ports: ports, listenAddress: listenAddress, options: options}
|
|
}
|
|
|
|
func (m multiHandlerConfig) HandlerName() string {
|
|
return m.handlerName
|
|
}
|
|
|
|
func (m multiHandlerConfig) ListenAddress() string {
|
|
return m.listenAddress
|
|
}
|
|
|
|
func (m multiHandlerConfig) Ports() []uint16 {
|
|
return m.ports
|
|
}
|
|
|
|
func (m multiHandlerConfig) Options() *viper.Viper {
|
|
return m.options
|
|
}
|
|
|
|
func (m multiHandlerConfig) HandlerConfigs() []HandlerConfig {
|
|
configs := make([]HandlerConfig, 0)
|
|
for _, port := range m.ports {
|
|
configs = append(configs, NewHandlerConfig(m.handlerName, port, m.listenAddress, m.options))
|
|
}
|
|
return configs
|
|
}
|