Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(292)

Side by Side Diff: common/retry/limited.go

Issue 1605363002: common/prpc, tools/cmd/cproto: prpc client (Closed) Base URL: https://chromium.googlesource.com/external/github.com/luci/luci-go@master
Patch Set: use text template for ast generation Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 retry 5 package retry
6 6
7 import ( 7 import (
8 "time" 8 "time"
9 9
10 "github.com/luci/luci-go/common/clock" 10 "github.com/luci/luci-go/common/clock"
11 "golang.org/x/net/context" 11 "golang.org/x/net/context"
12 ) 12 )
13 13
14 // Limited is an Iterator implementation that is limited by a maximum number of 14 // Limited is an Iterator implementation that is limited by a maximum number of
15 // retries or time. 15 // retries or time.
16 type Limited struct { 16 type Limited struct {
17 » Delay time.Duration // The next generated delay. If zero, 1 second wil l be used. 17 » Delay time.Duration // The next generated delay.
18 Retries int // The number of remaining retries. 18 Retries int // The number of remaining retries.
19 19
20 » MaxTotal time.Duration // The maximum total elasped time. If zero, no ma ximum will be enfored. 20 » MaxTotal time.Duration // The maximum total elapsed time. If zero, no ma ximum will be enforced.
21 21
22 startTime time.Time // The time when the generator initially started. 22 startTime time.Time // The time when the generator initially started.
23 } 23 }
24 24
25 var _ Iterator = (*Limited)(nil) 25 var _ Iterator = (*Limited)(nil)
26 26
27 // Next implements the Iterator interface. 27 // Next implements the Iterator interface.
28 func (i *Limited) Next(ctx context.Context, _ error) time.Duration { 28 func (i *Limited) Next(ctx context.Context, _ error) time.Duration {
29 if i.Retries == 0 { 29 if i.Retries == 0 {
30 return Stop 30 return Stop
(...skipping 17 matching lines...) Expand all
48 remaining := i.MaxTotal - elapsed 48 remaining := i.MaxTotal - elapsed
49 if remaining <= 0 { 49 if remaining <= 0 {
50 // No more time! 50 // No more time!
51 i.Retries = 0 51 i.Retries = 0
52 return Stop 52 return Stop
53 } 53 }
54 } 54 }
55 55
56 return i.Delay 56 return i.Delay
57 } 57 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698