diff options
| author | Ophestra <cat@gensokyo.uk> | 2025-12-04 02:27:45 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2025-12-04 02:29:27 +0900 |
| commit | 69b1131d6622108f37c85014035f71cf4f2986e5 (patch) | |
| tree | 368cc8d0659d9925c9df8153398ca5038313e160 /internal/pipewire/pod.go | |
| parent | 2c0b92771a95693af7f14a70ddeddc5371e73996 (diff) | |
internal/pipewire: use type name in error strings
This provides more useful messages for protocol errors.
Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal/pipewire/pod.go')
| -rw-r--r-- | internal/pipewire/pod.go | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/internal/pipewire/pod.go b/internal/pipewire/pod.go index 13d2dc25..582d0a16 100644 --- a/internal/pipewire/pod.go +++ b/internal/pipewire/pod.go @@ -150,7 +150,7 @@ func marshalValueAppendRaw(data []byte, v reflect.Value) ([]byte, error) { if v.CanInterface() { switch c := v.Interface().(type) { case Fd: - data = binary.NativeEndian.AppendUint32(data, SPA_TYPE_Fd) + data = SPA_TYPE_Fd.append(data) data = binary.NativeEndian.AppendUint64(data, uint64(c)) return data, nil } @@ -158,22 +158,22 @@ func marshalValueAppendRaw(data []byte, v reflect.Value) ([]byte, error) { switch v.Kind() { case reflect.Uint32: - data = binary.NativeEndian.AppendUint32(data, SPA_TYPE_Id) + data = SPA_TYPE_Id.append(data) data = binary.NativeEndian.AppendUint32(data, Word(v.Uint())) return data, nil case reflect.Int32: - data = binary.NativeEndian.AppendUint32(data, SPA_TYPE_Int) + data = SPA_TYPE_Int.append(data) data = binary.NativeEndian.AppendUint32(data, Word(v.Int())) return data, nil case reflect.Int64: - data = binary.NativeEndian.AppendUint32(data, SPA_TYPE_Long) + data = SPA_TYPE_Long.append(data) data = binary.NativeEndian.AppendUint64(data, uint64(v.Int())) return data, nil case reflect.Struct: - data = binary.NativeEndian.AppendUint32(data, SPA_TYPE_Struct) + data = SPA_TYPE_Struct.append(data) var err error for i := 0; i < v.NumField(); i++ { data, err = marshalValueAppend(data, v.Field(i)) @@ -185,13 +185,13 @@ func marshalValueAppendRaw(data []byte, v reflect.Value) ([]byte, error) { case reflect.Pointer: if v.IsNil() { - data = binary.NativeEndian.AppendUint32(data, SPA_TYPE_None) + data = SPA_TYPE_None.append(data) return data, nil } return marshalValueAppendRaw(data, v.Elem()) case reflect.String: - data = binary.NativeEndian.AppendUint32(data, SPA_TYPE_String) + data = SPA_TYPE_String.append(data) data = append(data, []byte(v.String())...) data = append(data, 0) return data, nil @@ -359,7 +359,7 @@ func unmarshalValue(data []byte, v reflect.Value, wireSizeP *Word) error { if len(data) < SizePrefix { return UnexpectedEOFError{} } - switch binary.NativeEndian.Uint32(data[SizeSPrefix:]) { + switch SPAKind(binary.NativeEndian.Uint32(data[SizeSPrefix:])) { case SPA_TYPE_None: v.SetZero() return nil @@ -404,15 +404,15 @@ func (e *InconsistentSizeError) Error() string { // An UnexpectedTypeError describes an unexpected type encountered // in data passed to [Unmarshal]. -type UnexpectedTypeError struct{ Type, Expect Word } +type UnexpectedTypeError struct{ Type, Expect SPAKind } func (u *UnexpectedTypeError) Error() string { - return "unexpected type: " + strconv.Itoa(int(u.Type)) + ", want " + strconv.Itoa(int(u.Expect)) + return "received " + u.Type.String() + " for a value of type " + u.Expect.String() } // unmarshalCheckTypeBounds performs bounds checks on data and validates the type and size prefixes. // An expected size of zero skips further bounds checks. -func unmarshalCheckTypeBounds(data *[]byte, t Word, sizeP *Word) error { +func unmarshalCheckTypeBounds(data *[]byte, t SPAKind, sizeP *Word) error { if len(*data) < SizePrefix { return UnexpectedEOFError{} } @@ -428,7 +428,7 @@ func unmarshalCheckTypeBounds(data *[]byte, t Word, sizeP *Word) error { return UnexpectedEOFError{} } - gotType := binary.NativeEndian.Uint32((*data)[SizeSPrefix:]) + gotType := SPAKind(binary.NativeEndian.Uint32((*data)[SizeSPrefix:])) if gotType != t { return &UnexpectedTypeError{gotType, t} } @@ -491,7 +491,7 @@ func (d *SPADict) Size() Word { // MarshalPOD satisfies [PODMarshaler] as [SPADict] violates the POD type system. func (d *SPADict) MarshalPOD(data []byte) ([]byte, error) { return appendInner(data, func(dataPrefix []byte) (data []byte, err error) { - data = binary.NativeEndian.AppendUint32(dataPrefix, SPA_TYPE_Struct) + data = SPA_TYPE_Struct.append(dataPrefix) if data, err = MarshalAppend(data, Int(len(*d))); err != nil { return } |
