From 0cfd5f5784f39c83eadcd21d619136f7cc620e91 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Thu, 7 Jan 2016 21:39:56 +0100 Subject: More parallel --- cmd/acme/main.go | 44 +++++++++++++++++++++++--------------------- 1 file changed, 23 insertions(+), 21 deletions(-) (limited to 'cmd') diff --git a/cmd/acme/main.go b/cmd/acme/main.go index bbe27fc..c4a5101 100644 --- a/cmd/acme/main.go +++ b/cmd/acme/main.go @@ -11,14 +11,14 @@ import ( var confName = flag.String("conf", "acme.toml", "configuration file") func main() { + var wg sync.WaitGroup + flag.Parse() conf, err := LoadConfig(*confName) if err != nil { log.Fatal(err) } - var wg sync.WaitGroup - for k, acc := range conf.Account { wg.Add(1) go func(k string, acc *account) { @@ -43,7 +43,6 @@ func main() { conf.Account[k] = acc }(k, acc) } - for k, des := range conf.Desire { wg.Add(1) go func(k string, des *desire) { @@ -56,7 +55,6 @@ func main() { conf.Desire[k] = des }(k, des) } - for k, pro := range conf.Provider { wg.Add(1) go func(k string, pro *provider) { @@ -69,29 +67,33 @@ func main() { conf.Provider[k] = pro }(k, pro) } - wg.Wait() for k, des := range conf.Desire { - log.Println("process", k) - if des.account.pending { - err = des.provider.Register(des.account, des.account.Contacts) - if err != nil { - log.Fatal("register", err) + wg.Add(1) + go func(k string, des *desire) { + log.Println("process", k) + defer wg.Done() + if des.account.pending { + err = des.provider.Register(des.account, des.account.Contacts) + if err != nil { + log.Fatal("register", err) + } } - } - err = des.provider.Authorize(des.account, des.Desire) - if err != nil { - log.Fatal("authz", err) - } + err = des.provider.Authorize(des.account, des.Desire) + if err != nil { + log.Fatal("authz", err) + } - err = des.provider.Cert(des.account, des.Desire) - if err != nil { - log.Fatal("cert", err) - } + err = des.provider.Cert(des.account, des.Desire) + if err != nil { + log.Fatal("cert", err) + } - des.SaveKey(des.Key) - des.SaveCert(des.Cert) + des.SaveKey(des.Key) + des.SaveCert(des.Cert) + }(k, des) } + wg.Wait() } -- cgit v1.2.3