45 lines
672 B
Go
45 lines
672 B
Go
package logger
|
|
|
|
import (
|
|
"fmt"
|
|
"th7/ports"
|
|
"time"
|
|
)
|
|
|
|
type Logger struct {
|
|
core ports.CorePort
|
|
db ports.DBPort
|
|
period int
|
|
run bool
|
|
}
|
|
|
|
func doLogging(log *Logger) {
|
|
|
|
duration := time.Duration(log.period) * time.Second
|
|
|
|
for log.run {
|
|
|
|
time.Sleep(duration)
|
|
|
|
ch, err := log.core.GetChannels()
|
|
if err != nil {
|
|
fmt.Printf("error getting data for logger: %v\n", err)
|
|
}
|
|
log.db.Save(ch)
|
|
}
|
|
}
|
|
|
|
func NewLogger(core ports.CorePort, db ports.DBPort, period int) *Logger {
|
|
var logger Logger
|
|
logger.db = db
|
|
logger.core = core
|
|
logger.period = period
|
|
logger.run = true
|
|
go doLogging(&logger)
|
|
return &logger
|
|
}
|
|
|
|
func (l *Logger) Stop() {
|
|
l.run = false
|
|
}
|