datawriter/internal/dataservice/dataservice.go

50 lines
1.0 KiB
Go

package dataservice
import (
"context"
"sync"
"time"
"gittea.marcokittel.de/elio/eliotools/datawriter/internal/dbwriter"
"gittea.marcokittel.de/elio/eliotools/datawriter/internal/event"
"gittea.marcokittel.de/elio/eliotools/logger"
)
type DataService struct {
listener []event.EventListener
log logger.Logger
}
func (d *DataService) ListenerCount() int {
return len(d.listener)
}
func (d *DataService) Run(ctx context.Context, wg *sync.WaitGroup) {
defer wg.Done()
for {
select {
case <-ctx.Done():
return
default:
//Hier nach neuen Dateien suchen
for _, l := range d.listener {
err := l.HandleData(ctx, dbwriter.MyStruct{A: "dkl", B: 3})
if err != nil {
//todo
}
}
d.log.Info("DataService Run")
time.Sleep(time.Second * 2)
}
}
}
func (d *DataService) AddListener(ev event.EventListener) {
d.listener = append(d.listener, ev)
}
func NewDataService() *DataService {
ds := DataService{listener: make([]event.EventListener, 0), log: logger.NewMarcoLogger()}
return &ds
}