Simplify contextx.ShrinkDeadline (#596)
This commit is contained in:
@@ -8,12 +8,5 @@ import (
|
|||||||
// ShrinkDeadline returns a new Context with proper deadline base on the given ctx and timeout.
|
// ShrinkDeadline returns a new Context with proper deadline base on the given ctx and timeout.
|
||||||
// And returns a cancel function as well.
|
// And returns a cancel function as well.
|
||||||
func ShrinkDeadline(ctx context.Context, timeout time.Duration) (context.Context, func()) {
|
func ShrinkDeadline(ctx context.Context, timeout time.Duration) (context.Context, func()) {
|
||||||
if deadline, ok := ctx.Deadline(); ok {
|
return context.WithTimeout(ctx, timeout)
|
||||||
leftTime := time.Until(deadline)
|
|
||||||
if leftTime < timeout {
|
|
||||||
timeout = leftTime
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return context.WithDeadline(ctx, time.Now().Add(timeout))
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user