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  }