Files
CHORUS/vendor/github.com/polydawn/refmt/obj/errors.go
anthonyrawlins 9bdcbe0447 Integrate BACKBEAT SDK and resolve KACHING license validation
Major integrations and fixes:
- Added BACKBEAT SDK integration for P2P operation timing
- Implemented beat-aware status tracking for distributed operations
- Added Docker secrets support for secure license management
- Resolved KACHING license validation via HTTPS/TLS
- Updated docker-compose configuration for clean stack deployment
- Disabled rollback policies to prevent deployment failures
- Added license credential storage (CHORUS-DEV-MULTI-001)

Technical improvements:
- BACKBEAT P2P operation tracking with phase management
- Enhanced configuration system with file-based secrets
- Improved error handling for license validation
- Clean separation of KACHING and CHORUS deployment stacks

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-06 07:56:26 +10:00

83 lines
3.2 KiB
Go

package obj
import (
"fmt"
"reflect"
. "github.com/polydawn/refmt/tok"
)
// General note: avoid using reflect.Type here. It doesn't do well with `go-cmp`,
// which in turn makes our tests for error paths a lot jankier.
// ErrInvalidUnmarshalTarget describes an invalid argument passed to Unmarshaller.Bind.
// (Unmarshalling must target a non-nil pointer so that it can address the value.)
type ErrInvalidUnmarshalTarget struct {
Type reflect.Type
}
func (e ErrInvalidUnmarshalTarget) Error() string {
if e.Type == nil {
return "unmarshal error: invalid target (nil)"
}
if e.Type.Kind() != reflect.Ptr {
return "unmarshal error: invalid target (non-pointer " + e.Type.String() + ")"
}
return "unmarshal error: invalid target (nil " + e.Type.String() + ")"
}
// ErrUnmarshalTypeCantFit is the error returned when unmarshalling cannot
// coerce the tokens in the stream into the kind of variables the unmarshal is targetting,
// for example if a map open token comes when an int is expected,
// or an int token comes when a string is expected.
type ErrUnmarshalTypeCantFit struct {
Token Token
Value reflect.Value
LenLim int // Set only if Value.Kind == Array and Token is bytes of a mismatch length.
}
func (e ErrUnmarshalTypeCantFit) Error() string {
switch e.LenLim {
case 0:
return fmt.Sprintf("unmarshal error: cannot assign %s to %s field", e.Token, e.Value.Kind())
default:
return fmt.Sprintf("unmarshal error: cannot assign %s to fixed length=%d byte array", e.Token, e.Value.Len())
}
}
// ErrMalformedTokenStream is the error returned when unmarshalling recieves ae
// completely invalid transition, such as when a map value is expected, but the
// map suddenly closes, or an array close is recieved with no matching array open.
type ErrMalformedTokenStream struct {
Got TokenType // Token in the stream that triggered the error.
Expected string // Freeform string describing valid token types. Often a summary like "array close or start of value", or "map close or key".
}
func (e ErrMalformedTokenStream) Error() string {
return fmt.Sprintf("malformed stream: invalid appearance of %s token; expected %s", e.Got, e.Expected)
}
// ErrNoSuchField is the error returned when unmarshalling into a struct and
// the token stream for the map contains a key which is not defined for the struct.
type ErrNoSuchField struct {
Name string // Field name from the token.
Type string // Type name of the struct we're operating on.
}
func (e ErrNoSuchField) Error() string {
return fmt.Sprintf("unmarshal error: stream contains key %q, but there's no such field in structs of type %s", e.Name, e.Type)
}
// ErrNoSuchUnionMember is the error returned when unmarshalling into a union
// interface and the token stream contains a key which does not name any of the
// known members of the union.
type ErrNoSuchUnionMember struct {
Name string // Key name from the token.
Type reflect.Type // The interface type we're trying to fill.
KnownMembers []string // Members we expected isntead.
}
func (e ErrNoSuchUnionMember) Error() string {
return fmt.Sprintf("unmarshal error: cannot unmarshal into union %s: %q is not one of the known members (expected one of %s)", e.Type, e.Name, e.KnownMembers)
}