Eventlistener eingebaut

This commit is contained in:
Marco Kittel 2025-06-24 22:41:17 +02:00
parent 62776f0633
commit e8ce057f49
6 changed files with 76 additions and 38 deletions

View File

@ -6,10 +6,9 @@ import (
"os/signal"
"sync"
"syscall"
"time"
"gittea.marcokittel.de/elio/eliotools/datawriter/internal/app"
"gittea.marcokittel.de/elio/eliotools/datawriter/internal/dbwriter"
"gittea.marcokittel.de/elio/eliotools/datawriter/internal/dataservice"
)
const (
@ -19,35 +18,20 @@ const (
StockMustHaveFileLen = 38
)
func db(ctx context.Context, app *app.App, wg *sync.WaitGroup) {
defer wg.Done()
for {
select {
case <-ctx.Done():
return
default:
//Hier nach neuen Dateien suchen
err := app.AppendData(dbwriter.MyStruct{A: "bla", B: 4})
if err != nil {
//todo
}
time.Sleep(time.Second * 2)
}
}
}
func main() {
ctx, cancel := signal.NotifyContext(
context.Background(),
os.Interrupt,
syscall.SIGTERM,
)
defer cancel()
var wg sync.WaitGroup
app := app.NewApp(NewDir, ProcessedDir, Rights, &wg)
wg.Add(1)
go db(ctx, app, &wg)
ds := dataservice.NewDataService()
ds.AddListener(app)
wg.Add(ds.ListenerCount())
app.Run()
ds.Run(ctx, &wg)
wg.Wait()
}

4
go.mod
View File

@ -3,6 +3,6 @@ module gittea.marcokittel.de/elio/eliotools/datawriter
go 1.24.4
require (
gittea.marcokittel.de/elio/eliotools/logger v0.0.0-20250622173330-32b4c009427c // indirect
gittea.marcokittel.de/elio/eliotools/tools v0.0.0-20250622182838-d7bc6feff972 // indirect
gittea.marcokittel.de/elio/eliotools/logger v0.0.0-20250624203334-69cf94bf1eef
gittea.marcokittel.de/elio/eliotools/tools v0.0.0-20250622182838-d7bc6feff972
)

6
go.sum
View File

@ -1,8 +1,6 @@
gittea.marcokittel.de/elio/eliotools/logger v0.0.0-20250622173330-32b4c009427c h1:oDEBlixjzptDRNutBddsgcNqls/+dDgfgzWvGGSnQwY=
gittea.marcokittel.de/elio/eliotools/logger v0.0.0-20250622173330-32b4c009427c/go.mod h1:WDmnG6o72HhGTSkgwj2kXYcRL2MaNFNsKNBeTh6NIzo=
gittea.marcokittel.de/elio/eliotools/tools v0.0.0-20250622173330-32b4c009427c h1:qaJdMokE/8FdLV1ASg6wNpZfLijciMfyuz7s4n8kbaw=
gittea.marcokittel.de/elio/eliotools/tools v0.0.0-20250622173330-32b4c009427c/go.mod h1:jJvuXliNOiG9i8VXrY9vK5Bqv9QwDtswCs3CNIIBvUQ=
gittea.marcokittel.de/elio/eliotools/tools v0.0.0-20250622182307-42e0ed4d3327 h1:EeBPKq4ttEu5i7cDUyt82B3ANc+sRU/pXcgKYs0Uqy8=
gittea.marcokittel.de/elio/eliotools/tools v0.0.0-20250622182307-42e0ed4d3327/go.mod h1:jJvuXliNOiG9i8VXrY9vK5Bqv9QwDtswCs3CNIIBvUQ=
gittea.marcokittel.de/elio/eliotools/logger v0.0.0-20250624203334-69cf94bf1eef h1:EzFzLINpiq712X2/t8ZMTLoWuqA6sRmpH3J0VpFi2Cg=
gittea.marcokittel.de/elio/eliotools/logger v0.0.0-20250624203334-69cf94bf1eef/go.mod h1:WDmnG6o72HhGTSkgwj2kXYcRL2MaNFNsKNBeTh6NIzo=
gittea.marcokittel.de/elio/eliotools/tools v0.0.0-20250622182838-d7bc6feff972 h1:ADdr3tbG0Zd5lYirqcMGWd7LSiVkwdOoknVOCfGFkYI=
gittea.marcokittel.de/elio/eliotools/tools v0.0.0-20250622182838-d7bc6feff972/go.mod h1:jJvuXliNOiG9i8VXrY9vK5Bqv9QwDtswCs3CNIIBvUQ=

View File

@ -1,6 +1,7 @@
package app
import (
"context"
"io/fs"
"os"
"runtime"
@ -31,6 +32,11 @@ func NewApp(newFolderPath string, processedFolderPath string, dirCreationRights
return &a
}
func (a *App) HandleData(ctx context.Context, data dbwriter.MyStruct) error {
a.log.Info("HandleData")
return nil
}
func (a *App) AppendData(data dbwriter.MyStruct) error {
a.log.Info("Verarbeite Daten: " + data.A + " " + string(data.B))
//Todo
@ -39,17 +45,12 @@ func (a *App) AppendData(data dbwriter.MyStruct) error {
func (a *App) Foo() {
// x := tools.IsFilenameValid(filename)
path, _ := os.Getwd()
ml := logger.NewMarcoLogger()
// ml.Info(fmt.Sprint(x))
newDirExists, err := tools.CheckDir(path + a.newFolderPath)
if err != nil {
ml.Fatal(err.Error())
}
processedDirExists, err := tools.CheckDir(path + a.processedFolderPath)
if err != nil {
ml.Fatal(err.Error())
@ -70,11 +71,6 @@ func (a *App) Foo() {
}
}
func (a *App) write(data dbwriter.MyStruct) {
a.log.Info("Okay.... wir sind jetzt hier..... Hier können wir die Spiele beginnen lassen")
}
func (a *App) Run() {
if runtime.GOOS == "windows" {
a.log.Fatal("Einfach nein!")

View File

@ -0,0 +1,49 @@
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
}

11
internal/event/event.go Normal file
View File

@ -0,0 +1,11 @@
package event
import (
"context"
"gittea.marcokittel.de/elio/eliotools/datawriter/internal/dbwriter"
)
type EventListener interface {
HandleData(ctx context.Context, data dbwriter.MyStruct) error
}