| OLD | NEW |
| (Empty) |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 // Package count contains 'counter' filters for all the gae services. This | |
| 6 // serves as a set of simple example filters, and also enables other filters | |
| 7 // to test to see if certain underlying APIs are called when they should be | |
| 8 // (e.g. for the datastore mcache filter, for example). | |
| 9 package count | |
| 10 | |
| 11 import ( | |
| 12 "sync/atomic" | |
| 13 ) | |
| 14 | |
| 15 // Entry is a success/fail pair for a single API method. It's returned | |
| 16 // by the Counter interface. | |
| 17 type Entry struct { | |
| 18 Successes int64 | |
| 19 Errors int64 | |
| 20 } | |
| 21 | |
| 22 // Total is a convenience function for getting the total number of calls to | |
| 23 // this API. It's Successes+Errors. | |
| 24 func (e Entry) Total() int64 { return e.Successes + e.Errors } | |
| 25 | |
| 26 func (e *Entry) up(errs ...error) error { | |
| 27 err := error(nil) | |
| 28 if len(errs) > 0 { | |
| 29 err = errs[0] | |
| 30 } | |
| 31 if err == nil { | |
| 32 atomic.AddInt64(&e.Successes, 1) | |
| 33 } else { | |
| 34 atomic.AddInt64(&e.Errors, 1) | |
| 35 } | |
| 36 return err | |
| 37 } | |
| OLD | NEW |