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 }