diff options
author | 2018-04-25 11:45:09 +0100 | |
---|---|---|
committer | 2018-04-25 11:45:09 +0100 | |
commit | 5e6114b797b56d4b0f910d0c11a5dc85b37bfd52 (patch) | |
tree | dd489f9c9918d0dbad6719411d19b133bb5040a6 /plugin/metrics/addr.go | |
parent | ce084012df435a98cac5511a294a0c45a1a3abf9 (diff) | |
download | coredns-5e6114b797b56d4b0f910d0c11a5dc85b37bfd52.tar.gz coredns-5e6114b797b56d4b0f910d0c11a5dc85b37bfd52.tar.zst coredns-5e6114b797b56d4b0f910d0c11a5dc85b37bfd52.zip |
plugin/pkg/uniq: add (#1733)
Spin this out the metrics package so we can use it in the health
one of well to fix some reload bugs.
Diffstat (limited to 'plugin/metrics/addr.go')
-rw-r--r-- | plugin/metrics/addr.go | 52 |
1 files changed, 0 insertions, 52 deletions
diff --git a/plugin/metrics/addr.go b/plugin/metrics/addr.go deleted file mode 100644 index fe8e5e5fe..000000000 --- a/plugin/metrics/addr.go +++ /dev/null @@ -1,52 +0,0 @@ -package metrics - -// addrs keeps track on which addrs we listen, so we only start one listener, is -// prometheus is used in multiple Server Blocks. -type addrs struct { - a map[string]value -} - -type value struct { - state int - f func() error -} - -var uniqAddr addrs - -func newAddress() addrs { - return addrs{a: make(map[string]value)} -} - -func (a addrs) setAddress(addr string, f func() error) { - if a.a[addr].state == done { - return - } - a.a[addr] = value{todo, f} -} - -// setAddressTodo sets addr to 'todo' again. -func (a addrs) setAddressTodo(addr string) { - v, ok := a.a[addr] - if !ok { - return - } - v.state = todo - a.a[addr] = v -} - -// forEachTodo iterates for a and executes f for each element that is 'todo' and sets it to 'done'. -func (a addrs) forEachTodo() error { - for k, v := range a.a { - if v.state == todo { - v.f() - } - v.state = done - a.a[k] = v - } - return nil -} - -const ( - todo = 1 - done = 2 -) |