Files

48 lines
1.1 KiB
Go
Raw Permalink Normal View History

package notify
import (
"context"
"errors"
)
// batchSenderQueueWaitError marks a request that expired or was canceled
// while waiting for the shared physical write gate. The transport is still
// healthy in this case, so the sender must not become permanently failed.
type batchSenderQueueWaitError struct {
err error
}
func (e *batchSenderQueueWaitError) Error() string {
if e == nil || e.err == nil {
return "batch sender write queue wait failed"
}
return "batch sender write queue wait failed: " + e.err.Error()
}
func (e *batchSenderQueueWaitError) Unwrap() error {
if e == nil {
return nil
}
return e.err
}
func newBatchSenderQueueWaitError(err error) error {
if err == nil {
return nil
}
var existing *batchSenderQueueWaitError
if errors.As(err, &existing) {
return err
}
return &batchSenderQueueWaitError{err: err}
}
func isBatchSenderQueueWaitError(err error) bool {
var queueErr *batchSenderQueueWaitError
return errors.As(err, &queueErr)
}
func isBatchSenderQueueWaitCause(err error) bool {
return errors.Is(err, context.Canceled) || isTimeoutLikeError(err)
}