...

Source file src/sigs.k8s.io/kustomize/api/internal/utils/timedcall.go

Documentation: sigs.k8s.io/kustomize/api/internal/utils

     1  // Copyright 2020 The Kubernetes Authors.
     2  // SPDX-License-Identifier: Apache-2.0
     3  
     4  package utils
     5  
     6  import (
     7  	"time"
     8  )
     9  
    10  // TimedCall runs fn, failing if it doesn't complete in the given duration.
    11  // The description is used in the timeout error message.
    12  func TimedCall(description string, d time.Duration, fn func() error) error {
    13  	done := make(chan error, 1)
    14  	timer := time.NewTimer(d)
    15  	defer timer.Stop()
    16  	go func() { done <- fn() }()
    17  	select {
    18  	case err := <-done:
    19  		return err
    20  	case <-timer.C:
    21  		return NewErrTimeOut(d, description)
    22  	}
    23  }
    24  

View as plain text