summaryrefslogtreecommitdiff
path: root/scorsh.go
diff options
context:
space:
mode:
Diffstat (limited to 'scorsh.go')
-rw-r--r--scorsh.go40
1 files changed, 17 insertions, 23 deletions
diff --git a/scorsh.go b/scorsh.go
index 0fb91a8..aca3121 100644
--- a/scorsh.go
+++ b/scorsh.go
@@ -6,14 +6,13 @@ import (
"log"
)
-// manage debugging messages
+// manage debugging messages
const debug debugging = true
type debugging bool
-
-func (d debugging) log(format string, args ...interface{}){
+func (d debugging) log(format string, args ...interface{}) {
if d {
log.Printf(format, args...)
}
@@ -45,12 +44,11 @@ func SCORSHerr(err int) error {
}
-
func FindMatchingWorkers(master *SCORSHmaster, msg *SCORSHmsg) []*SCORSHworker {
-
+
var ret []*SCORSHworker
-
- for idx,w := range master.Workers {
+
+ for idx, w := range master.Workers {
if w.Matches(msg.Repo, msg.Branch) {
debug.log("--- Worker: %s matches %s:%s\n", w.Name, msg.Repo, msg.Branch)
ret = append(ret, &(master.Workers[idx]))
@@ -59,34 +57,33 @@ func FindMatchingWorkers(master *SCORSHmaster, msg *SCORSHmsg) []*SCORSHworker {
return ret
}
-
func Master(master *SCORSHmaster) {
// master main loop:
var matching_workers []*SCORSHworker
var push_msg SCORSHmsg
-
+
matching_workers = make([]*SCORSHworker, len(master.Workers))
log.Println("[master] Master started ")
-
+
for {
select {
// - receive stuff from the spooler
- case push_msg = <- master.Spooler:
+ case push_msg = <-master.Spooler:
debug.log("[master] received message: %s\n", push_msg)
-
+
// - lookup the repos map for matching workers
matching_workers = FindMatchingWorkers(master, &push_msg)
debug.log("[master] matching workers: %s\n", matching_workers)
-
+
// add the message to PendingMsg
//...
// - dispatch the message to all the matching workers
for _, w := range matching_workers {
- // increase the counter associated to the message
+ // increase the counter associated to the message
w.MsgChan <- push_msg
}
}
@@ -97,14 +94,12 @@ func InitMaster() *SCORSHmaster {
master := ReadGlobalConfig(*conf_file)
-
master.Repos = make(map[string][]*SCORSHworker)
master.WorkingMsg = make(map[string]int)
// This is the mutex-channel on which we receive acks from workers
master.StatusChan = make(chan SCORSHmsg, 1)
master.Spooler = make(chan SCORSHmsg, 1)
-
err_workers := StartWorkers(master)
if err_workers != nil {
log.Fatal("Error starting workers: ", err_workers)
@@ -114,20 +109,19 @@ func InitMaster() *SCORSHmaster {
err_spooler := StartSpooler(master)
if err_spooler != nil {
log.Fatal("Error starting spooler: ", err_spooler)
- }
+ }
return master
-
-}
+}
func main() {
flag.Parse()
-
+
master := InitMaster()
-
+
go Master(master)
- <- master.StatusChan
-
+ <-master.StatusChan
+
}