generated from snivilised/astrolib
-
Notifications
You must be signed in to change notification settings - Fork 0
/
factories.go
78 lines (68 loc) · 1.42 KB
/
factories.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
71
72
73
74
75
76
77
78
package tv
import (
"github.com/snivilised/pants"
"github.com/snivilised/traverse/core"
)
// Walk requests a sequential traversal of a directory tree.
func Walk() NavigatorFactory {
return &walkerFac{}
}
// Run requests a concurrent traversal of a directory tree.
func Run(wg pants.WaitGroup) NavigatorFactory {
return &runnerFac{
wg: wg,
}
}
type factory struct {
}
type walkerFac struct {
factory
}
func (f *walkerFac) Configure() Director {
return director(func(bs *Builders) core.Navigator {
// resume or prime? If resume, we need to access the hibernation
// wake condition on the retrieved options. But how do we know what
// the extent is, so we know if we need to make this query?
//
//
artefacts, err := bs.buildAll()
return &driver{
session{
sync: &sequential{
trunk: trunk{
kc: artefacts.kc,
o: artefacts.o,
ext: artefacts.ext,
err: err,
},
},
plugins: artefacts.plugins,
},
}
})
}
type runnerFac struct {
factory
wg pants.WaitGroup
}
func (f *runnerFac) Configure() Director {
// Run: create the observable/worker-pool
//
return director(func(bs *Builders) core.Navigator {
artefacts, err := bs.buildAll()
return &driver{
session{
sync: &concurrent{
trunk: trunk{
kc: artefacts.kc,
o: artefacts.o,
ext: artefacts.ext,
err: err,
},
wg: f.wg,
},
plugins: artefacts.plugins,
},
}
})
}