go/services/statestore/errors/errors.go (50 lines of code) (raw):
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
package errors
import (
"errors"
"fmt"
)
type (
// Service errors indicate an error returned from the state store.
Service string
// Payload errors indicate a malformed or unexpected payload returned from
// the state store.
Payload string
// Argument errors indicate an invalid argument.
Argument struct {
Name string
Value any
}
)
var (
ErrService = errors.New("service error")
ErrPayload = errors.New("malformed payload")
ErrArgument = errors.New("invalid argument")
)
// The following are well-known error strings returned from the state store.
//
//nolint:gosec // False positives.
const (
TimestampSkew Service = "the request timestamp is too far in the future; ensure that the client and broker system clocks are synchronized"
MissingFencingToken Service = "a fencing token is required for this request"
FencingTokenSkew Service = "the request fencing token timestamp is too far in the future; ensure that the client and broker system clocks are synchronized"
FencingTokenLowerVersion Service = "the request fencing token is a lower version than the fencing token protecting the resource"
QuotaExceeded Service = "the quota has been exceeded"
SyntaxError Service = "syntax error"
NotAuthorized Service = "not authorized"
UnknownCommand Service = "unknown command"
WrongNumberOfArguments Service = "wrong number of arguments"
TimestampMissing Service = "missing timestamp"
TimestampMalformed Service = "malformed timestamp"
KeyLengthZero Service = "the key length is zero"
)
func (e Service) Error() string {
return fmt.Sprintf("%s: %s", ErrService, string(e))
}
func (Service) Unwrap() error {
return ErrService
}
func (e Payload) Error() string {
return fmt.Sprintf("%s: %s", ErrPayload, string(e))
}
func (Payload) Unwrap() error {
return ErrPayload
}
func (e Argument) Error() string {
return fmt.Sprintf("%s: %s=%v", ErrArgument, e.Name, e.Value)
}
func (Argument) Unwrap() error {
return ErrArgument
}