46 lines
799 B
Go
46 lines
799 B
Go
package api
|
|
|
|
import (
|
|
"log"
|
|
"th7/data/core"
|
|
"th7/ports"
|
|
"time"
|
|
|
|
"encoding/json"
|
|
)
|
|
|
|
const (
|
|
CheckChannelDur = time.Millisecond * 1200
|
|
StartupSleepDur = time.Second * 5
|
|
)
|
|
|
|
type Wrapper struct {
|
|
Channels []core.Channel `json:"channels"`
|
|
Ratio core.Ratio `json:"ratio"`
|
|
Timestamp string `json:"time"`
|
|
}
|
|
|
|
// Regularly get the newest data and bung it out on ws
|
|
func startService(man *Manager, core ports.CorePort) {
|
|
|
|
var wrap Wrapper
|
|
|
|
time.Sleep(StartupSleepDur)
|
|
|
|
for {
|
|
wrap.Channels = core.GetChannels()
|
|
wrap.Ratio = core.GetRatio()
|
|
wrap.Timestamp = time.Now().Format(time.RFC1123)
|
|
|
|
marshaled, err := json.Marshal(wrap)
|
|
if err != nil {
|
|
log.Println("Error marshaling struct:", wrap)
|
|
}
|
|
|
|
man.broadcast <- []byte(marshaled)
|
|
|
|
time.Sleep(CheckChannelDur)
|
|
}
|
|
|
|
}
|