package ctxutil
import (
"context"
"time"
)
func WithTimeout(parent context.Context, timeout time.Duration) (context.Context, context.CancelFunc) {
return context.WithTimeout(parent, timeout)
}
func WithDeadline(parent context.Context, deadline time.Time) (context.Context, context.CancelFunc) {
return context.WithDeadline(parent, deadline)
}
func DoWithTimeout(ctx context.Context, timeout time.Duration, fn func(context.Context) error) error {
ctx, cancel := WithTimeout(ctx, timeout)
defer cancel()
return fn(ctx)
}
func IsTimeout(err error) bool {
if err == nil {
return false
}
return err == context.DeadlineExceeded || err == context.Canceled
}