github.com/ydb-platform/ydb-go-sdk/v3@v3.57.0/internal/ratelimiter/errors/errors.go (about)

     1  package errors
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/ydb-platform/ydb-go-sdk/v3/internal/xerrors"
     7  	"github.com/ydb-platform/ydb-go-sdk/v3/ratelimiter"
     8  )
     9  
    10  type acquireError struct {
    11  	err    error
    12  	amount uint64
    13  }
    14  
    15  func (e *acquireError) Amount() uint64 {
    16  	return e.amount
    17  }
    18  
    19  func (e *acquireError) Error() string {
    20  	return fmt.Sprintf("acquire for amount (%d) failed: %v", e.amount, e.err)
    21  }
    22  
    23  func (e *acquireError) Unwrap() error {
    24  	return e.err
    25  }
    26  
    27  func NewAcquire(amoount uint64, err error) ratelimiter.AcquireError {
    28  	return &acquireError{
    29  		err:    err,
    30  		amount: amoount,
    31  	}
    32  }
    33  
    34  func IsAcquireError(err error) bool {
    35  	var ae *acquireError
    36  
    37  	return xerrors.As(err, &ae)
    38  }
    39  
    40  func ToAcquireError(err error) ratelimiter.AcquireError {
    41  	var ae *acquireError
    42  	if xerrors.As(err, &ae) {
    43  		return ae
    44  	}
    45  
    46  	return nil
    47  }