Example #1
0
func keystoreDispatch(ks *store.KeyStore, keystoreFile string) {
	for {
		t := time.After(10 * time.Minute)
		select {
		case cmd, ok := <-dispatch:
			if !ok {
				return
			}
			log.Println("received command for", cmd.op)
			res := process(ks, cmd)
			cmd.cb <- res
		case <-t:
			log.Printf("dumping keystore")
			t = time.After(10 * time.Minute)
			out, err := ks.Dump()
			if err != nil {
				log.Printf("WARNING: failed to dump keystore: %v", err)
				break
			}
			err = ioutil.WriteFile(keystoreFile, out, 0644)
			if err != nil {
				log.Printf("WARNING: failed to write keystore: %v", err)
			}
		}
	}
}