Przeglądaj źródła

New GetOrRegisterCounter API.

Richard Crowley 12 lat temu
rodzic
commit
4be06477e2
2 zmienionych plików z 26 dodań i 0 usunięć
  1. 18 0
      counter.go
  2. 8 0
      counter_test.go

+ 18 - 0
counter.go

@@ -21,6 +21,24 @@ func NewCounter() Counter {
 	return &StandardCounter{0}
 }
 
+// Create and register a new Counter.
+func NewRegisteredCounter(name string, r Registry) Counter {
+	c := NewCounter()
+	if nil == r {
+		r = DefaultRegistry
+	}
+	r.Register(name, c)
+	return c
+}
+
+// Get an existing or create and register a new Counter.
+func GetOrRegisterCounter(name string, r Registry) Counter {
+	if nil == r {
+		r = DefaultRegistry
+	}
+	return r.GetOrRegister(name, NewCounter()).(Counter)
+}
+
 // No-op Counter.
 type NilCounter struct{}
 

+ 8 - 0
counter_test.go

@@ -57,3 +57,11 @@ func TestCounterZero(t *testing.T) {
 		t.Errorf("c.Count(): 0 != %v\n", count)
 	}
 }
+
+func TestGetOrRegisterCounter(t *testing.T) {
+	r := NewRegistry()
+	GetOrRegisterCounter("foo", r).Inc(47)
+	if c := GetOrRegisterCounter("foo", r); 47 != c.Count() {
+		t.Fatal(c)
+	}
+}