本文整理匯總了Golang中github.com/teemupo/consul-template/dependency.Dependency類的典型用法代碼示例。如果您正苦於以下問題:Golang Dependency類的具體用法?Golang Dependency怎麽用?Golang Dependency使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。
在下文中一共展示了Dependency類的9個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: Forget
// Forget accepts a dependency and removes all associated data with this
// dependency. It also resets the "receivedData" internal map.
func (b *Brain) Forget(d dep.Dependency) {
b.Lock()
defer b.Unlock()
delete(b.data, d.HashCode())
delete(b.receivedData, d.HashCode())
}
示例2: Remember
// Remember accepts a dependency and the data to store associated with that
// dep. This function converts the given data to a proper type and stores
// it interally.
func (b *Brain) Remember(d dep.Dependency, data interface{}) {
b.Lock()
defer b.Unlock()
b.data[d.HashCode()] = data
b.receivedData[d.HashCode()] = struct{}{}
}
示例3: Watching
// Watching determines if the given dependency is being watched.
func (w *Watcher) Watching(d dep.Dependency) bool {
w.Lock()
defer w.Unlock()
_, ok := w.depViewMap[d.HashCode()]
return ok
}
示例4: ForceWatching
// ForceWatching is used to force setting the internal state of watching
// a depedency. This is only used for unit testing purposes.
func (w *Watcher) ForceWatching(d dep.Dependency, enabled bool) {
w.Lock()
defer w.Unlock()
if enabled {
w.depViewMap[d.HashCode()] = nil
} else {
delete(w.depViewMap, d.HashCode())
}
}
示例5: Recall
// Recall gets the current value for the given dependency in the Brain.
func (b *Brain) Recall(d dep.Dependency) (interface{}, bool) {
b.RLock()
defer b.RUnlock()
// If we have not received data for this dependency, return now.
if _, ok := b.receivedData[d.HashCode()]; !ok {
return nil, false
}
return b.data[d.HashCode()], true
}
示例6: Remove
// Remove removes the given dependency from the list and stops the
// associated View. If a View for the given dependency does not exist, this
// function will return false. If the View does exist, this function will return
// true upon successful deletion.
func (w *Watcher) Remove(d dep.Dependency) bool {
w.Lock()
defer w.Unlock()
log.Printf("[INFO] (watcher) removing %s", d.Display())
if view, ok := w.depViewMap[d.HashCode()]; ok {
log.Printf("[DEBUG] (watcher) actually removing %s", d.Display())
view.stop()
delete(w.depViewMap, d.HashCode())
return true
}
log.Printf("[DEBUG] (watcher) %s did not exist, skipping", d.Display())
return false
}
示例7: Receive
// Receive accepts a Dependency and data for that dep. This data is
// cached on the Runner. This data is then used to determine if a Template
// is "renderable" (i.e. all its Dependencies have been downloaded at least
// once).
func (r *Runner) Receive(d dep.Dependency, data interface{}) {
// Just because we received data, it does not mean that we are actually
// watching for that data. How is that possible you may ask? Well, this
// Runner's data channel is pooled, meaning it accepts multiple data views
// before actually blocking. Whilest this runner is performing a Run() and
// executing diffs, it may be possible that more data was pushed onto the
// data channel pool for a dependency that we no longer care about.
//
// Accepting this dependency would introduce stale data into the brain, and
// that is simply unacceptable. In fact, it is a fun little bug:
//
// https://github.com/hashicorp/consul-template/issues/198
//
// and by "little" bug, I mean really big bug.
if _, ok := r.dependencies[d.HashCode()]; ok {
log.Printf("[DEBUG] (runner) receiving dependency %s", d.Display())
r.brain.Remember(d, data)
}
}
示例8: Add
// Add adds the given dependency to the list of monitored depedencies
// and start the associated view. If the dependency already exists, no action is
// taken.
//
// If the Dependency already existed, it this function will return false. If the
// view was successfully created, it will return true. If an error occurs while
// creating the view, it will be returned here (but future errors returned by
// the view will happen on the channel).
func (w *Watcher) Add(d dep.Dependency) (bool, error) {
w.Lock()
defer w.Unlock()
log.Printf("[INFO] (watcher) adding %s", d.Display())
if _, ok := w.depViewMap[d.HashCode()]; ok {
log.Printf("[DEBUG] (watcher) %s already exists, skipping", d.Display())
return false, nil
}
v, err := NewView(w.config, d)
if err != nil {
return false, err
}
log.Printf("[DEBUG] (watcher) %s starting", d.Display())
w.depViewMap[d.HashCode()] = v
go v.poll(w.DataCh, w.ErrCh)
return true, nil
}
示例9: addDependency
// addDependency adds the given Dependency to the map.
func addDependency(m map[string]dep.Dependency, d dep.Dependency) {
if _, ok := m[d.HashCode()]; !ok {
m[d.HashCode()] = d
}
}