github.com/lirm/aeron-go@v0.0.0-20230415210743-920325491dc4/archive/codecs/VarDataEncoding.go (about) 1 // Generated SBE (Simple Binary Encoding) message codec 2 3 package codecs 4 5 import ( 6 "fmt" 7 "io" 8 "math" 9 ) 10 11 type VarDataEncoding struct { 12 Length uint32 13 VarData uint8 14 } 15 16 func (v *VarDataEncoding) Encode(_m *SbeGoMarshaller, _w io.Writer) error { 17 if err := _m.WriteUint32(_w, v.Length); err != nil { 18 return err 19 } 20 if err := _m.WriteUint8(_w, v.VarData); err != nil { 21 return err 22 } 23 return nil 24 } 25 26 func (v *VarDataEncoding) Decode(_m *SbeGoMarshaller, _r io.Reader, actingVersion uint16) error { 27 if !v.LengthInActingVersion(actingVersion) { 28 v.Length = v.LengthNullValue() 29 } else { 30 if err := _m.ReadUint32(_r, &v.Length); err != nil { 31 return err 32 } 33 } 34 if !v.VarDataInActingVersion(actingVersion) { 35 v.VarData = v.VarDataNullValue() 36 } else { 37 if err := _m.ReadUint8(_r, &v.VarData); err != nil { 38 return err 39 } 40 } 41 return nil 42 } 43 44 func (v *VarDataEncoding) RangeCheck(actingVersion uint16, schemaVersion uint16) error { 45 if v.LengthInActingVersion(actingVersion) { 46 if v.Length < v.LengthMinValue() || v.Length > v.LengthMaxValue() { 47 return fmt.Errorf("Range check failed on v.Length (%v < %v > %v)", v.LengthMinValue(), v.Length, v.LengthMaxValue()) 48 } 49 } 50 if v.VarDataInActingVersion(actingVersion) { 51 if v.VarData < v.VarDataMinValue() || v.VarData > v.VarDataMaxValue() { 52 return fmt.Errorf("Range check failed on v.VarData (%v < %v > %v)", v.VarDataMinValue(), v.VarData, v.VarDataMaxValue()) 53 } 54 } 55 return nil 56 } 57 58 func VarDataEncodingInit(v *VarDataEncoding) { 59 return 60 } 61 62 func (*VarDataEncoding) EncodedLength() int64 { 63 return -1 64 } 65 66 func (*VarDataEncoding) LengthMinValue() uint32 { 67 return 0 68 } 69 70 func (*VarDataEncoding) LengthMaxValue() uint32 { 71 return 1073741824 72 } 73 74 func (*VarDataEncoding) LengthNullValue() uint32 { 75 return math.MaxUint32 76 } 77 78 func (*VarDataEncoding) LengthSinceVersion() uint16 { 79 return 0 80 } 81 82 func (v *VarDataEncoding) LengthInActingVersion(actingVersion uint16) bool { 83 return actingVersion >= v.LengthSinceVersion() 84 } 85 86 func (*VarDataEncoding) LengthDeprecated() uint16 { 87 return 0 88 } 89 90 func (*VarDataEncoding) VarDataMinValue() uint8 { 91 return 0 92 } 93 94 func (*VarDataEncoding) VarDataMaxValue() uint8 { 95 return math.MaxUint8 - 1 96 } 97 98 func (*VarDataEncoding) VarDataNullValue() uint8 { 99 return math.MaxUint8 100 } 101 102 func (*VarDataEncoding) VarDataSinceVersion() uint16 { 103 return 0 104 } 105 106 func (v *VarDataEncoding) VarDataInActingVersion(actingVersion uint16) bool { 107 return actingVersion >= v.VarDataSinceVersion() 108 } 109 110 func (*VarDataEncoding) VarDataDeprecated() uint16 { 111 return 0 112 }