Eventlistener eingebaut
This commit is contained in:
parent
62776f0633
commit
e8ce057f49
@ -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
4
go.mod
@ -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
6
go.sum
@ -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=
|
||||
|
||||
@ -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!")
|
||||
|
||||
49
internal/dataservice/dataservice.go
Normal file
49
internal/dataservice/dataservice.go
Normal 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
11
internal/event/event.go
Normal 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
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user