From fba8b2af286ace2aa857123e9c14aa794a42f830 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Tue, 2 Feb 2016 18:11:51 +0100 Subject: Go concurrent --- cmd/acme/main.go | 54 ++++++++++++++++++++++++++---------------------------- 1 file changed, 26 insertions(+), 28 deletions(-) (limited to 'cmd') diff --git a/cmd/acme/main.go b/cmd/acme/main.go index 7427ca3..d8b1cfd 100644 --- a/cmd/acme/main.go +++ b/cmd/acme/main.go @@ -6,6 +6,7 @@ import ( "log" "os" "runtime/trace" + "sync" "dim13.org/acme" ) @@ -57,30 +58,6 @@ func prepare(conf *Config) error { return nil } -func satisfice(des *desire) error { - if !des.account.registered { - log.Println("register acc") - if err := des.provider.Register(des.account, des.account.Contacts); err != nil { - return err - } - des.account.registered = true - } - - if err := des.provider.Authorize(des.account, des.Desire); err != nil { - return err - } - - if err := des.provider.Bundle(des.account, des.Desire); err != nil { - return err - } - - if err := des.Save(des.Cert, des.Key); err != nil { - return err - } - - return nil -} - func main() { flag.Parse() if *tracing != "" { @@ -114,6 +91,23 @@ func main() { log.Fatal(err) } + // register accs first + wg := sync.WaitGroup{} + for k, des := range conf.Desire { + if des.account.registered { + continue + } + wg.Add(1) + go func(name string, des *desire) { + log.Println("register", name) + des.provider.Register(des.account, des.account.Contacts) + des.account.registered = true + wg.Done() + }(k, des) + } + wg.Wait() + + // satisfice for k, des := range conf.Desire { if des.Webroot != "" { wrSol := acme.NewWebrootSolver(des.Webroot) @@ -128,9 +122,13 @@ func main() { log.Fatal("no Solver available") } - log.Println("satisfice", k) - if err := satisfice(des); err != nil { - log.Fatal(err) - } + wg.Add(1) + go func(name string, des *desire) { + des.provider.Authorize(des.account, des.Desire) + des.provider.Bundle(des.account, des.Desire) + des.Save(des.Cert, des.Key) + wg.Done() + }(k, des) } + wg.Wait() } -- cgit v1.2.3