/
resultsdispatcher.go
70 lines (47 loc) · 1.19 KB
/
resultsdispatcher.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package jobworker
import "github.com/fatih/color"
import "time"
var stTime time.Time
func ResultsDispatcher(resultQueue chan JobResult, signaler chan int) {
stTime = time.Now()
for {
select {
case jr := <-resultQueue:
ProcessResult(&jr)
case <-signaler:
return
}
}
}
var cnt int = 0
var TotalDone int = 0
var Rate float64
var resultsToDispatch [](*JobResult)
func ProcessResult(jresult *JobResult) {
cnt += 1
TotalDone += 1
elapsed := time.Since(stTime)
Rate = float64(cnt) / elapsed.Seconds()
if elapsed.Seconds() > float64(15) {
cnt = 1
stTime = time.Now()
// color.Blue("\nResetting Counter")
}
// color.Cyan("#%d - Rate: %f jobs/seconds\n", TotalDone, Rate)
if jresult.Status != 0 {
color.Red("Error: %s", jresult.ErrorMsg)
}
resultsToDispatch = append(resultsToDispatch, jresult)
if len(resultsToDispatch) > Config.DispatchBufferSize {
DispatchMassResults()
resultsToDispatch = [](*JobResult){}
}
}
func DispatchMassResults() {
// color.Red("\nDispatching Mass Results\n")
for i := 0; i < len(resultsToDispatch); i++ {
DispatchResult(resultsToDispatch[i])
}
FlushCompletedJobs(Config.Fetch_Binkey)
// color.Green("\nDispatching Done\n")
}