morz-infoboard/player/agent/internal/app/app.go

42 lines
822 B
Go

package app
import (
"fmt"
"log"
"os"
"time"
"git.az-it.net/az/morz-infoboard/player/agent/internal/config"
)
type App struct {
Config config.Config
logger *log.Logger
}
func New() (*App, error) {
cfg, err := config.Load()
if err != nil {
return nil, err
}
logger := log.New(os.Stdout, "agent ", log.LstdFlags|log.LUTC)
return &App{Config: cfg, logger: logger}, nil
}
func (a *App) Run() error {
if a.Config.ScreenID == "" {
return fmt.Errorf("screen id is required")
}
a.logger.Printf("configured server=%s mqtt=%s heartbeat=%ds", a.Config.ServerBaseURL, a.Config.MQTTBroker, a.Config.HeartbeatEvery)
ticker := time.NewTicker(time.Duration(a.Config.HeartbeatEvery) * time.Second)
defer ticker.Stop()
for {
a.logger.Printf("heartbeat tick screen=%s", a.Config.ScreenID)
<-ticker.C
}
}