Channel übergabe mit einem Buffer von 10 Plätzen für Länderdatensätze
This commit is contained in:
parent
c3826f7f92
commit
dd6cb28e9a
|
|
@ -16,7 +16,14 @@ type filedata struct {
|
||||||
filename string
|
filename string
|
||||||
dt time.Time
|
dt time.Time
|
||||||
}
|
}
|
||||||
type ElioHandleFunc func(filename string) bool
|
|
||||||
|
// Daten über Channel aus der Goroutine ausführen. CounterID stellt sicher, dass das Herkunftsland der Daten bekannt ist.
|
||||||
|
type CountryCsvData struct {
|
||||||
|
CountryID string
|
||||||
|
Data []string
|
||||||
|
}
|
||||||
|
|
||||||
|
type ElioHandleFunc func(filename string, data chan<- CountryCsvData) bool
|
||||||
|
|
||||||
type ElioDateiFoo struct {
|
type ElioDateiFoo struct {
|
||||||
process ElioHandleFunc
|
process ElioHandleFunc
|
||||||
|
|
@ -68,6 +75,9 @@ func (f *ElioDateiFoo) ScanCsv() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//BufferedChannel mit Platz für 10 Datensätzen
|
||||||
|
dataChannel := make(chan CountryCsvData, 10)
|
||||||
for _, v := range filemap {
|
for _, v := range filemap {
|
||||||
f.mu.RLock()
|
f.mu.RLock()
|
||||||
_, ok := f.haveDone[v.filename]
|
_, ok := f.haveDone[v.filename]
|
||||||
|
|
@ -75,9 +85,10 @@ func (f *ElioDateiFoo) ScanCsv() {
|
||||||
if ok {
|
if ok {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
//Todo: Goroutine Einbauen, die alte Datensätze aus der Map entfernt
|
||||||
f.mu.Lock()
|
f.mu.Lock()
|
||||||
f.haveDone[v.filename] = time.Now()
|
f.haveDone[v.filename] = time.Now()
|
||||||
f.mu.Unlock()
|
f.mu.Unlock()
|
||||||
go f.process(v.filename)
|
go f.process(v.filename, dataChannel)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue