diff --git a/config.go b/config.go deleted file mode 100644 index c8f47cf..0000000 --- a/config.go +++ /dev/null @@ -1,6 +0,0 @@ -package showbridge - -type Config struct { - Modules []ModuleConfig `json:"modules"` - Routes []RouteConfig `json:"routes"` -} diff --git a/http-client.go b/http-client.go index d6596eb..0afa81d 100644 --- a/http-client.go +++ b/http-client.go @@ -5,10 +5,12 @@ import ( "log/slog" "net/http" "time" + + "github.com/jwetzell/showbridge-go/internal/config" ) type HTTPClient struct { - config ModuleConfig + config config.ModuleConfig router *Router client *http.Client } @@ -16,7 +18,7 @@ type HTTPClient struct { func init() { RegisterModule(ModuleRegistration{ Type: "net.http.client", - New: func(config ModuleConfig) (Module, error) { + New: func(config config.ModuleConfig) (Module, error) { return &HTTPClient{config: config}, nil }, diff --git a/http-server.go b/http-server.go index ba89b71..e03c426 100644 --- a/http-server.go +++ b/http-server.go @@ -5,10 +5,12 @@ import ( "fmt" "log/slog" "net/http" + + "github.com/jwetzell/showbridge-go/internal/config" ) type HTTPServer struct { - config ModuleConfig + config config.ModuleConfig Port uint16 router *Router } @@ -21,7 +23,7 @@ type ResponseData struct { func init() { RegisterModule(ModuleRegistration{ Type: "net.http.server", - New: func(config ModuleConfig) (Module, error) { + New: func(config config.ModuleConfig) (Module, error) { params := config.Params port, ok := params["port"] if !ok { diff --git a/internal/config/config.go b/internal/config/config.go new file mode 100644 index 0000000..8d3c33a --- /dev/null +++ b/internal/config/config.go @@ -0,0 +1,20 @@ +package config + +import "github.com/jwetzell/showbridge-go/internal/processing" + +type Config struct { + Modules []ModuleConfig `json:"modules"` + Routes []RouteConfig `json:"routes"` +} + +type ModuleConfig struct { + Id string `json:"id"` + Type string `json:"type"` + Params map[string]any `json:"params"` +} + +type RouteConfig struct { + Input string `json:"input"` + Processors []processing.ProcessorConfig `json:"processors"` + Output string `json:"output"` +} diff --git a/interval.go b/interval.go index cc2c88f..5200888 100644 --- a/interval.go +++ b/interval.go @@ -4,10 +4,12 @@ import ( "fmt" "log/slog" "time" + + "github.com/jwetzell/showbridge-go/internal/config" ) type Interval struct { - config ModuleConfig + config config.ModuleConfig Duration uint32 router *Router ticker *time.Ticker @@ -16,7 +18,7 @@ type Interval struct { func init() { RegisterModule(ModuleRegistration{ Type: "gen.interval", - New: func(config ModuleConfig) (Module, error) { + New: func(config config.ModuleConfig) (Module, error) { params := config.Params duration, ok := params["duration"] diff --git a/midi-client.go b/midi-client.go index 886ac3a..2d67f95 100644 --- a/midi-client.go +++ b/midi-client.go @@ -6,12 +6,13 @@ import ( "fmt" "log/slog" + "github.com/jwetzell/showbridge-go/internal/config" "gitlab.com/gomidi/midi/v2" _ "gitlab.com/gomidi/midi/v2/drivers/rtmididrv" ) type MIDIClient struct { - config ModuleConfig + config config.ModuleConfig router *Router InputPort string OutputPort string @@ -22,7 +23,7 @@ func init() { RegisterModule(ModuleRegistration{ //TODO(jwetzell): find a better namespace than "misc" Type: "misc.midi.client", - New: func(config ModuleConfig) (Module, error) { + New: func(config config.ModuleConfig) (Module, error) { params := config.Params input, ok := params["input"] diff --git a/module.go b/module.go index 0b09aa8..6415cdd 100644 --- a/module.go +++ b/module.go @@ -3,11 +3,13 @@ package showbridge import ( "fmt" "sync" + + "github.com/jwetzell/showbridge-go/internal/config" ) type ModuleError struct { Index int - Config ModuleConfig + Config config.ModuleConfig Error error } @@ -19,15 +21,9 @@ type Module interface { Output(any) error } -type ModuleConfig struct { - Id string `json:"id"` - Type string `json:"type"` - Params map[string]any `json:"params"` -} - type ModuleRegistration struct { Type string `json:"type"` - New func(ModuleConfig) (Module, error) + New func(config.ModuleConfig) (Module, error) } func RegisterModule(mod ModuleRegistration) { diff --git a/mqtt-client.go b/mqtt-client.go index 206cb53..25014f1 100644 --- a/mqtt-client.go +++ b/mqtt-client.go @@ -5,11 +5,12 @@ import ( "log/slog" mqtt "github.com/eclipse/paho.mqtt.golang" + "github.com/jwetzell/showbridge-go/internal/config" "github.com/jwetzell/showbridge-go/internal/processing" ) type MQTTClient struct { - config ModuleConfig + config config.ModuleConfig router *Router Broker string ClientID string @@ -20,7 +21,7 @@ type MQTTClient struct { func init() { RegisterModule(ModuleRegistration{ Type: "net.mqtt.client", - New: func(config ModuleConfig) (Module, error) { + New: func(config config.ModuleConfig) (Module, error) { params := config.Params broker, ok := params["broker"] diff --git a/nats-client.go b/nats-client.go index c53b42c..f25974b 100644 --- a/nats-client.go +++ b/nats-client.go @@ -4,12 +4,13 @@ import ( "fmt" "log/slog" + "github.com/jwetzell/showbridge-go/internal/config" "github.com/jwetzell/showbridge-go/internal/processing" "github.com/nats-io/nats.go" ) type NATSClient struct { - config ModuleConfig + config config.ModuleConfig router *Router URL string Subject string @@ -19,7 +20,7 @@ type NATSClient struct { func init() { RegisterModule(ModuleRegistration{ Type: "net.nats.client", - New: func(config ModuleConfig) (Module, error) { + New: func(config config.ModuleConfig) (Module, error) { params := config.Params url, ok := params["url"] diff --git a/psn-client.go b/psn-client.go index 7dfe650..0e6301d 100644 --- a/psn-client.go +++ b/psn-client.go @@ -7,10 +7,11 @@ import ( "time" "github.com/jwetzell/psn-go" + "github.com/jwetzell/showbridge-go/internal/config" ) type PSNClient struct { - config ModuleConfig + config config.ModuleConfig conn *net.UDPConn router *Router decoder *psn.Decoder @@ -19,7 +20,7 @@ type PSNClient struct { func init() { RegisterModule(ModuleRegistration{ Type: "net.psn.client", - New: func(config ModuleConfig) (Module, error) { + New: func(config config.ModuleConfig) (Module, error) { return &PSNClient{config: config, decoder: psn.NewDecoder()}, nil }, diff --git a/route.go b/route.go index ed179f9..deb2656 100644 --- a/route.go +++ b/route.go @@ -3,12 +3,13 @@ package showbridge import ( "fmt" + "github.com/jwetzell/showbridge-go/internal/config" "github.com/jwetzell/showbridge-go/internal/processing" ) type RouteError struct { Index int - Config RouteConfig + Config config.RouteConfig Error error } @@ -20,13 +21,7 @@ type Route struct { router *Router } -type RouteConfig struct { - Input string `json:"input"` - Processors []processing.ProcessorConfig `json:"processors"` - Output string `json:"output"` -} - -func NewRoute(index int, config RouteConfig, router *Router) (*Route, error) { +func NewRoute(index int, config config.RouteConfig, router *Router) (*Route, error) { processors := []processing.Processor{} if len(config.Processors) > 0 { diff --git a/router.go b/router.go index c1e0461..bb80afc 100644 --- a/router.go +++ b/router.go @@ -6,6 +6,8 @@ import ( "log/slog" "os" "sync" + + "github.com/jwetzell/showbridge-go/internal/config" ) type RoutingError struct { @@ -21,7 +23,7 @@ type Router struct { moduleWait sync.WaitGroup } -func NewRouter(ctx context.Context, config Config) (*Router, []ModuleError, []RouteError) { +func NewRouter(ctx context.Context, config config.Config) (*Router, []ModuleError, []RouteError) { logger := slog.New(slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{ Level: slog.LevelInfo, diff --git a/serial-client.go b/serial-client.go index 4ee6ae6..0bf576b 100644 --- a/serial-client.go +++ b/serial-client.go @@ -7,12 +7,13 @@ import ( "log/slog" "time" + "github.com/jwetzell/showbridge-go/internal/config" "github.com/jwetzell/showbridge-go/internal/framing" "go.bug.st/serial" ) type SerialClient struct { - config ModuleConfig + config config.ModuleConfig router *Router Port string Framer framing.Framer @@ -24,7 +25,7 @@ func init() { RegisterModule(ModuleRegistration{ //TODO(jwetzell): find a better namespace than "misc" Type: "misc.serial.client", - New: func(config ModuleConfig) (Module, error) { + New: func(config config.ModuleConfig) (Module, error) { params := config.Params port, ok := params["port"] diff --git a/tcp-client.go b/tcp-client.go index 382aa3e..d580025 100644 --- a/tcp-client.go +++ b/tcp-client.go @@ -6,11 +6,12 @@ import ( "net" "time" + "github.com/jwetzell/showbridge-go/internal/config" "github.com/jwetzell/showbridge-go/internal/framing" ) type TCPClient struct { - config ModuleConfig + config config.ModuleConfig framer framing.Framer conn *net.TCPConn router *Router @@ -20,7 +21,7 @@ type TCPClient struct { func init() { RegisterModule(ModuleRegistration{ Type: "net.tcp.client", - New: func(config ModuleConfig) (Module, error) { + New: func(config config.ModuleConfig) (Module, error) { params := config.Params host, ok := params["host"] diff --git a/tcp-server.go b/tcp-server.go index 098b3f6..345cc68 100644 --- a/tcp-server.go +++ b/tcp-server.go @@ -10,11 +10,12 @@ import ( "syscall" "time" + "github.com/jwetzell/showbridge-go/internal/config" "github.com/jwetzell/showbridge-go/internal/framing" ) type TCPServer struct { - config ModuleConfig + config config.ModuleConfig Addr *net.TCPAddr Framer framing.Framer router *Router @@ -27,7 +28,7 @@ type TCPServer struct { func init() { RegisterModule(ModuleRegistration{ Type: "net.tcp.server", - New: func(config ModuleConfig) (Module, error) { + New: func(config config.ModuleConfig) (Module, error) { params := config.Params port, ok := params["port"] if !ok { diff --git a/timer.go b/timer.go index 281310c..a038227 100644 --- a/timer.go +++ b/timer.go @@ -4,10 +4,12 @@ import ( "fmt" "log/slog" "time" + + "github.com/jwetzell/showbridge-go/internal/config" ) type Timer struct { - config ModuleConfig + config config.ModuleConfig Duration uint32 router *Router timer *time.Timer @@ -16,7 +18,7 @@ type Timer struct { func init() { RegisterModule(ModuleRegistration{ Type: "gen.timer", - New: func(config ModuleConfig) (Module, error) { + New: func(config config.ModuleConfig) (Module, error) { params := config.Params duration, ok := params["duration"] diff --git a/udp-client.go b/udp-client.go index e327613..0b7c962 100644 --- a/udp-client.go +++ b/udp-client.go @@ -4,10 +4,12 @@ import ( "fmt" "log/slog" "net" + + "github.com/jwetzell/showbridge-go/internal/config" ) type UDPClient struct { - config ModuleConfig + config config.ModuleConfig Addr *net.UDPAddr Port uint16 conn *net.UDPConn @@ -17,7 +19,7 @@ type UDPClient struct { func init() { RegisterModule(ModuleRegistration{ Type: "net.udp.client", - New: func(config ModuleConfig) (Module, error) { + New: func(config config.ModuleConfig) (Module, error) { params := config.Params host, ok := params["host"] diff --git a/udp-multicast.go b/udp-multicast.go index ce6080d..23b3d92 100644 --- a/udp-multicast.go +++ b/udp-multicast.go @@ -5,10 +5,12 @@ import ( "log/slog" "net" "time" + + "github.com/jwetzell/showbridge-go/internal/config" ) type UDPMulticast struct { - config ModuleConfig + config config.ModuleConfig conn *net.UDPConn router *Router Addr *net.UDPAddr @@ -17,7 +19,7 @@ type UDPMulticast struct { func init() { RegisterModule(ModuleRegistration{ Type: "net.udp.multicast", - New: func(config ModuleConfig) (Module, error) { + New: func(config config.ModuleConfig) (Module, error) { params := config.Params ip, ok := params["ip"] diff --git a/udp-server.go b/udp-server.go index d22ca68..8886714 100644 --- a/udp-server.go +++ b/udp-server.go @@ -6,18 +6,20 @@ import ( "log/slog" "net" "time" + + "github.com/jwetzell/showbridge-go/internal/config" ) type UDPServer struct { Addr *net.UDPAddr - config ModuleConfig + config config.ModuleConfig router *Router } func init() { RegisterModule(ModuleRegistration{ Type: "net.udp.server", - New: func(config ModuleConfig) (Module, error) { + New: func(config config.ModuleConfig) (Module, error) { params := config.Params port, ok := params["port"] if !ok {