OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 package clock | 5 package clock |
6 | 6 |
7 import ( | 7 import ( |
8 "time" | 8 "time" |
9 ) | 9 ) |
10 | 10 |
11 // Timer is a wrapper around the time.Timer structure. | 11 // Timer is a wrapper around the time.Timer structure. |
12 // | 12 // |
13 // A Timer is instantiated from a Clock instance and started via its Reset() | 13 // A Timer is instantiated from a Clock instance and started via its Reset() |
14 // method. | 14 // method. |
15 type Timer interface { | 15 type Timer interface { |
16 » // GetC returns the underlying timer's channel, or nil if the timer is n
o | 16 » // GetC returns the underlying timer's channel. |
17 » // running. | 17 » // |
18 » GetC() <-chan time.Time | 18 » // If the Timer is interrupted via Stop, its channel will block indefini
tely. |
| 19 » GetC() <-chan TimerResult |
19 | 20 |
20 // Reset configures the timer to expire after a specified duration. | 21 // Reset configures the timer to expire after a specified duration. |
21 // | 22 // |
22 // If the timer is already running, its previous state will be cleared a
nd | 23 // If the timer is already running, its previous state will be cleared a
nd |
23 » // this method will return true. | 24 » // this method will return true. The channel returned by GetC() will not |
| 25 » // change due to Reset. |
24 Reset(d time.Duration) bool | 26 Reset(d time.Duration) bool |
25 | 27 |
26 // Stop clears any timer tasking, rendering it inactive. | 28 // Stop clears any timer tasking, rendering it inactive. |
27 // | 29 // |
28 // Stop may be called on an inactive timer, in which case nothing will h
appen | 30 // Stop may be called on an inactive timer, in which case nothing will h
appen |
29 » // If the timer is active, it will be stopped and this method will retur
n true. | 31 » // If the timer is active, it will be stopped and this method will retur
n |
| 32 » // true. |
| 33 » // |
| 34 » // If a timer is stopped, its GetC channel will block indefinitely to av
oid |
| 35 » // erroneously unblocking goroutines that are waiting on it. This is |
| 36 » // consistent with time.Timer. |
30 Stop() bool | 37 Stop() bool |
31 } | 38 } |
| 39 |
| 40 // TimerResult is the result for a timer operation. |
| 41 // |
| 42 // Time will be set to the time when the result was generated. If the source of |
| 43 // the result was prematurely terminated (e.g., due to Context cancellation) |
| 44 // Err will be non-nil. |
| 45 type TimerResult struct { |
| 46 time.Time |
| 47 |
| 48 // Err, if not nil, indicates that After did not finish naturally and co
ntains |
| 49 // the reason why. |
| 50 Err error |
| 51 } |
OLD | NEW |