-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathtemplate_iterators.go
38 lines (35 loc) · 1 KB
/
template_iterators.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
package wfl
import (
"github.com/dgruber/drmaa2interface"
"strconv"
"time"
)
// NewEnvSequenceIterator returns an iterator which increments the
// environment variable env each time when called.
func NewEnvSequenceIterator(env string, start, incr int) Iterator {
sequence := start
return func(t drmaa2interface.JobTemplate) drmaa2interface.JobTemplate {
if t.JobEnvironment == nil {
t.JobEnvironment = make(map[string]string, 1)
}
t.JobEnvironment[env] = strconv.Itoa(sequence)
sequence += incr
return t
}
}
// NewTimeIterator returns a template iterator which return a job
// template every d time.
func NewTimeIterator(d time.Duration) Iterator {
ch := time.NewTicker(d).C
iteration := 0
return func(t drmaa2interface.JobTemplate) drmaa2interface.JobTemplate {
<-ch
if t.JobEnvironment == nil {
t.JobEnvironment = make(map[string]string, 2)
}
iteration++
t.JobEnvironment["wfl_iteration"] = strconv.Itoa(iteration)
t.JobEnvironment["wfl_time"] = time.Now().String()
return t
}
}