|
- package msgp
-
- import (
- "fmt"
- "reflect"
- )
-
- var (
- // ErrShortBytes is returned when the
- // slice being decoded is too short to
- // contain the contents of the message
- ErrShortBytes error = errShort{}
-
- // this error is only returned
- // if we reach code that should
- // be unreachable
- fatal error = errFatal{}
- )
-
- // Error is the interface satisfied
- // by all of the errors that originate
- // from this package.
- type Error interface {
- error
-
- // Resumable returns whether
- // or not the error means that
- // the stream of data is malformed
- // and the information is unrecoverable.
- Resumable() bool
- }
-
- type errShort struct{}
-
- func (e errShort) Error() string { return "msgp: too few bytes left to read object" }
- func (e errShort) Resumable() bool { return false }
-
- type errFatal struct{}
-
- func (f errFatal) Error() string { return "msgp: fatal decoding error (unreachable code)" }
- func (f errFatal) Resumable() bool { return false }
-
- // ArrayError is an error returned
- // when decoding a fix-sized array
- // of the wrong size
- type ArrayError struct {
- Wanted uint32
- Got uint32
- }
-
- // Error implements the error interface
- func (a ArrayError) Error() string {
- return fmt.Sprintf("msgp: wanted array of size %d; got %d", a.Wanted, a.Got)
- }
-
- // Resumable is always 'true' for ArrayErrors
- func (a ArrayError) Resumable() bool { return true }
-
- // IntOverflow is returned when a call
- // would downcast an integer to a type
- // with too few bits to hold its value.
- type IntOverflow struct {
- Value int64 // the value of the integer
- FailedBitsize int // the bit size that the int64 could not fit into
- }
-
- // Error implements the error interface
- func (i IntOverflow) Error() string {
- return fmt.Sprintf("msgp: %d overflows int%d", i.Value, i.FailedBitsize)
- }
-
- // Resumable is always 'true' for overflows
- func (i IntOverflow) Resumable() bool { return true }
-
- // UintOverflow is returned when a call
- // would downcast an unsigned integer to a type
- // with too few bits to hold its value
- type UintOverflow struct {
- Value uint64 // value of the uint
- FailedBitsize int // the bit size that couldn't fit the value
- }
-
- // Error implements the error interface
- func (u UintOverflow) Error() string {
- return fmt.Sprintf("msgp: %d overflows uint%d", u.Value, u.FailedBitsize)
- }
-
- // Resumable is always 'true' for overflows
- func (u UintOverflow) Resumable() bool { return true }
-
- // UintBelowZero is returned when a call
- // would cast a signed integer below zero
- // to an unsigned integer.
- type UintBelowZero struct {
- Value int64 // value of the incoming int
- }
-
- // Error implements the error interface
- func (u UintBelowZero) Error() string {
- return fmt.Sprintf("msgp: attempted to cast int %d to unsigned", u.Value)
- }
-
- // Resumable is always 'true' for overflows
- func (u UintBelowZero) Resumable() bool { return true }
-
- // A TypeError is returned when a particular
- // decoding method is unsuitable for decoding
- // a particular MessagePack value.
- type TypeError struct {
- Method Type // Type expected by method
- Encoded Type // Type actually encoded
- }
-
- // Error implements the error interface
- func (t TypeError) Error() string {
- return fmt.Sprintf("msgp: attempted to decode type %q with method for %q", t.Encoded, t.Method)
- }
-
- // Resumable returns 'true' for TypeErrors
- func (t TypeError) Resumable() bool { return true }
-
- // returns either InvalidPrefixError or
- // TypeError depending on whether or not
- // the prefix is recognized
- func badPrefix(want Type, lead byte) error {
- t := sizes[lead].typ
- if t == InvalidType {
- return InvalidPrefixError(lead)
- }
- return TypeError{Method: want, Encoded: t}
- }
-
- // InvalidPrefixError is returned when a bad encoding
- // uses a prefix that is not recognized in the MessagePack standard.
- // This kind of error is unrecoverable.
- type InvalidPrefixError byte
-
- // Error implements the error interface
- func (i InvalidPrefixError) Error() string {
- return fmt.Sprintf("msgp: unrecognized type prefix 0x%x", byte(i))
- }
-
- // Resumable returns 'false' for InvalidPrefixErrors
- func (i InvalidPrefixError) Resumable() bool { return false }
-
- // ErrUnsupportedType is returned
- // when a bad argument is supplied
- // to a function that takes `interface{}`.
- type ErrUnsupportedType struct {
- T reflect.Type
- }
-
- // Error implements error
- func (e *ErrUnsupportedType) Error() string { return fmt.Sprintf("msgp: type %q not supported", e.T) }
-
- // Resumable returns 'true' for ErrUnsupportedType
- func (e *ErrUnsupportedType) Resumable() bool { return true }
|