ooni-probe-cli/pkg/oonimkall/sessioncontext.go

30 lines
628 B
Go
Raw Normal View History

package oonimkall
import (
"context"
"math"
"time"
)
const maxTimeout = int64(time.Duration(math.MaxInt64) / time.Second)
func clampTimeout(timeout, max int64) int64 {
if timeout > max {
timeout = max
}
return timeout
}
func newContext(timeout int64) (context.Context, context.CancelFunc) {
return newContextEx(timeout, maxTimeout)
}
func newContextEx(timeout, max int64) (context.Context, context.CancelFunc) {
if timeout > 0 {
timeout = clampTimeout(timeout, max)
return context.WithTimeout(
context.Background(), time.Duration(timeout)*time.Second)
}
return context.WithCancel(context.Background())
}