launchpad.net/~rogpeppe/juju-core/500-errgo-fix@v0.0.0-20140213181702-000000002356/worker/cleaner/cleaner.go (about) 1 // Copyright 2012, 2013 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package cleaner 5 6 import ( 7 "launchpad.net/juju-core/log" 8 "launchpad.net/juju-core/state" 9 "launchpad.net/juju-core/state/api/watcher" 10 "launchpad.net/juju-core/worker" 11 ) 12 13 // Cleaner is responsible for cleaning up the state. 14 type Cleaner struct { 15 st *state.State 16 } 17 18 // NewCleaner returns a worker.Worker that runs state.Cleanup() 19 // if the CleanupWatcher signals documents marked for deletion. 20 func NewCleaner(st *state.State) worker.Worker { 21 return worker.NewNotifyWorker(&Cleaner{st: st}) 22 } 23 24 func (c *Cleaner) SetUp() (watcher.NotifyWatcher, error) { 25 return c.st.WatchCleanups(), nil 26 } 27 28 func (c *Cleaner) Handle() error { 29 if err := c.st.Cleanup(); err != nil { 30 log.Errorf("worker/cleaner: cannot cleanup state: %v", err) 31 } 32 // We do not return the err from Cleanup, because we don't want to stop 33 // the loop as a failure 34 return nil 35 } 36 37 func (c *Cleaner) TearDown() error { 38 // Nothing to cleanup, only state is the watcher 39 return nil 40 }