|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH RFC 05/59] controller: Add WorkerParams argument to Init in Worker interface
From: George Dunlap <george.dunlap@xxxxxxxxxx>
For now just make it a plain []string; later make it more abstrcted.
Signed-off-by: George Dunlap <george.dunlap@xxxxxxxxxx>
---
main.go | 22 +++++++++++++++++-----
processworker.go | 4 ++--
2 files changed, 19 insertions(+), 7 deletions(-)
diff --git a/main.go b/main.go
index a4986cf..90388dd 100644
--- a/main.go
+++ b/main.go
@@ -14,9 +14,13 @@ type WorkerReport struct {
MaxDelta int
}
+type WorkerParams struct {
+ Args []string
+}
+
type Worker interface {
SetId(int)
- Init() error
+ Init(WorkerParams) error
Shutdown()
Process(chan WorkerReport, chan bool)
}
@@ -49,6 +53,14 @@ func Report(ws *WorkerState, r WorkerReport) {
ws.LastReport = r
}
+type WorkerList []WorkerState
+
+func (ws *WorkerList) Start(report chan WorkerReport, done chan bool) {
+ for i := range *ws {
+ go (*ws)[i].w.Process(report, done)
+ }
+}
+
func main() {
count := 2
@@ -60,17 +72,17 @@ func main() {
i := 0
- Workers := make([]WorkerState, count)
+ Workers := WorkerList(make([]WorkerState, count))
for i = 0; i< count; i++ {
Workers[i].w = &ProcessWorker{}
Workers[i].w.SetId(i)
- Workers[i].w.Init()
-
- go Workers[i].w.Process(report, done)
+ Workers[i].w.Init(WorkerParams{[]string{"burnwait", "20",
"20000000"}})
}
+ Workers.Start(report, done)
+
for i > 0 {
select {
case r := <-report:
diff --git a/processworker.go b/processworker.go
index c1d1fd5..806e4d7 100644
--- a/processworker.go
+++ b/processworker.go
@@ -20,8 +20,8 @@ func (w *ProcessWorker) SetId(i int) {
w.id = i
}
-func (w *ProcessWorker) Init() (err error) {
- w.c = exec.Command("../worker/worker-proc", "burnwait", "20",
"20000000")
+func (w *ProcessWorker) Init(p WorkerParams) (err error) {
+ w.c = exec.Command("../worker/worker-proc", p.Args...)
w.stdout, err = w.c.StdoutPipe()
if err != nil {
--
2.7.4
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |