Files
argo-cd/util/buffered_context/buffered_context.go
Michael Crenshaw 96f95ca1c1 Use gRPC timeout for sidecar CMPs (#8131) (#8236)
Use gRPC timeout for sidecar CMPs (#8131) (#8236)

Signed-off-by: Michael Crenshaw <michael@crenshaw.dev>
2022-01-25 15:45:37 -08:00

21 lines
841 B
Go

package buffered_context
import (
"context"
"time"
)
// WithEarlierDeadline creates a new context with a deadline before the given context's deadline. The buffer parameter
// determines how much earlier the new deadline is. Returns the new context (with the original context as its parent)
// and a pointer to a cancel function for the new context.
//
// If the given context doesn't have a deadline, return the original context unchanged and a do-nothing cancel function.
func WithEarlierDeadline(originalCtx context.Context, buffer time.Duration) (context.Context, context.CancelFunc) {
var cancelFunc context.CancelFunc = func() {}
bufferedCtx := originalCtx
if deadline, ok := originalCtx.Deadline(); ok {
bufferedCtx, cancelFunc = context.WithDeadline(originalCtx, deadline.Add(-1*buffer))
}
return bufferedCtx, cancelFunc
}