From 0e4b36035c96027c9c95185c78156734e8d032ad Mon Sep 17 00:00:00 2001 From: Fernandez Ludovic Date: Sat, 20 Apr 2019 15:00:19 +0200 Subject: [PATCH] review --- file.go | 60 ++++++++++++++++++++--------------------- kv.go | 84 ++++++++++++++++++++++++++++----------------------------- 2 files changed, 72 insertions(+), 72 deletions(-) diff --git a/file.go b/file.go index 6736a9d..b1e4ec5 100644 --- a/file.go +++ b/file.go @@ -13,6 +13,36 @@ type FileBackend struct { Path string } +func (b FileBackend) getStoredData(watch bool) (<-chan *StoredData, <-chan error) { + dataCh := make(chan *StoredData) + errCh := make(chan error) + go func() { + sendStoredData(b.Path, dataCh, errCh) + if !watch { + close(dataCh) + close(errCh) + } + }() + + if !watch { + return dataCh, errCh + } + + watcher, err := fsnotify.NewWatcher() + if err != nil { + errCh <- err + } + + go loopFile(b.Path, watcher, dataCh, errCh) + + err = watcher.Add(b.Path) + if err != nil { + errCh <- err + } + + return dataCh, errCh +} + func getStoredDataFromFile(path string) (*StoredData, error) { f, err := os.Open(path) if err != nil { @@ -54,33 +84,3 @@ func loopFile(path string, watcher *fsnotify.Watcher, dataCh chan *StoredData, e } }() } - -func (b FileBackend) getStoredData(watch bool) (<-chan *StoredData, <-chan error) { - dataCh := make(chan *StoredData) - errCh := make(chan error) - go func() { - sendStoredData(b.Path, dataCh, errCh) - if !watch { - close(dataCh) - close(errCh) - } - }() - - if !watch { - return dataCh, errCh - } - - watcher, err := fsnotify.NewWatcher() - if err != nil { - errCh <- err - } - - go loopFile(b.Path, watcher, dataCh, errCh) - - err = watcher.Add(b.Path) - if err != nil { - errCh <- err - } - - return dataCh, errCh -} diff --git a/kv.go b/kv.go index 3617369..38a8c1b 100644 --- a/kv.go +++ b/kv.go @@ -17,6 +17,48 @@ import ( const storeKey = "traefik/acme/account/object" +// KVBackend represents a Key/Value pair backend +type KVBackend struct { + Name string + Client []string + Config *store.Config +} + +func (b KVBackend) getStoredData(watch bool) (<-chan *StoredData, <-chan error) { + dataCh := make(chan *StoredData) + errCh := make(chan error) + + backend, err := register(b.Name) + if err != nil { + go func() { + errCh <- err + }() + return dataCh, errCh + } + kvStore, err := valkeyrie.NewStore( + backend, + b.Client, + b.Config, + ) + + if err != nil { + go func() { + errCh <- err + }() + return dataCh, errCh + } + + if !watch { + go getSingleData(kvStore, dataCh, errCh) + return dataCh, errCh + } + + go loopKV(watch, kvStore, dataCh, errCh) + + return dataCh, errCh + +} + func getStoredDataFromGzip(value []byte) (*StoredData, error) { data := &StoredData{} @@ -38,13 +80,6 @@ func getStoredDataFromGzip(value []byte) (*StoredData, error) { return storedData, nil } -// KVBackend represents a Key/Value pair backend -type KVBackend struct { - Name string - Client []string - Config *store.Config -} - func register(backend string) (store.Backend, error) { switch backend { case Consul: @@ -108,38 +143,3 @@ func getSingleData(kvStore store.Store, dataCh chan *StoredData, errCh chan erro close(dataCh) close(errCh) } - -func (b KVBackend) getStoredData(watch bool) (<-chan *StoredData, <-chan error) { - dataCh := make(chan *StoredData) - errCh := make(chan error) - - backend, err := register(b.Name) - if err != nil { - go func() { - errCh <- err - }() - return dataCh, errCh - } - kvStore, err := valkeyrie.NewStore( - backend, - b.Client, - b.Config, - ) - - if err != nil { - go func() { - errCh <- err - }() - return dataCh, errCh - } - - if !watch { - go getSingleData(kvStore, dataCh, errCh) - return dataCh, errCh - } - - go loopKV(watch, kvStore, dataCh, errCh) - - return dataCh, errCh - -}