github.com/lirm/aeron-go@v0.0.0-20230415210743-920325491dc4/cluster/codecs/GroupSizeEncoding.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 GroupSizeEncoding struct { 12 BlockLength uint16 13 NumInGroup uint16 14 } 15 16 func (g *GroupSizeEncoding) Encode(_m *SbeGoMarshaller, _w io.Writer) error { 17 if err := _m.WriteUint16(_w, g.BlockLength); err != nil { 18 return err 19 } 20 if err := _m.WriteUint16(_w, g.NumInGroup); err != nil { 21 return err 22 } 23 return nil 24 } 25 26 func (g *GroupSizeEncoding) Decode(_m *SbeGoMarshaller, _r io.Reader, actingVersion uint16) error { 27 if !g.BlockLengthInActingVersion(actingVersion) { 28 g.BlockLength = g.BlockLengthNullValue() 29 } else { 30 if err := _m.ReadUint16(_r, &g.BlockLength); err != nil { 31 return err 32 } 33 } 34 if !g.NumInGroupInActingVersion(actingVersion) { 35 g.NumInGroup = g.NumInGroupNullValue() 36 } else { 37 if err := _m.ReadUint16(_r, &g.NumInGroup); err != nil { 38 return err 39 } 40 } 41 return nil 42 } 43 44 func (g *GroupSizeEncoding) RangeCheck(actingVersion uint16, schemaVersion uint16) error { 45 if g.BlockLengthInActingVersion(actingVersion) { 46 if g.BlockLength < g.BlockLengthMinValue() || g.BlockLength > g.BlockLengthMaxValue() { 47 return fmt.Errorf("Range check failed on g.BlockLength (%v < %v > %v)", g.BlockLengthMinValue(), g.BlockLength, g.BlockLengthMaxValue()) 48 } 49 } 50 if g.NumInGroupInActingVersion(actingVersion) { 51 if g.NumInGroup < g.NumInGroupMinValue() || g.NumInGroup > g.NumInGroupMaxValue() { 52 return fmt.Errorf("Range check failed on g.NumInGroup (%v < %v > %v)", g.NumInGroupMinValue(), g.NumInGroup, g.NumInGroupMaxValue()) 53 } 54 } 55 return nil 56 } 57 58 func GroupSizeEncodingInit(g *GroupSizeEncoding) { 59 return 60 } 61 62 func (*GroupSizeEncoding) EncodedLength() int64 { 63 return 4 64 } 65 66 func (*GroupSizeEncoding) BlockLengthMinValue() uint16 { 67 return 0 68 } 69 70 func (*GroupSizeEncoding) BlockLengthMaxValue() uint16 { 71 return math.MaxUint16 - 1 72 } 73 74 func (*GroupSizeEncoding) BlockLengthNullValue() uint16 { 75 return math.MaxUint16 76 } 77 78 func (*GroupSizeEncoding) BlockLengthSinceVersion() uint16 { 79 return 0 80 } 81 82 func (g *GroupSizeEncoding) BlockLengthInActingVersion(actingVersion uint16) bool { 83 return actingVersion >= g.BlockLengthSinceVersion() 84 } 85 86 func (*GroupSizeEncoding) BlockLengthDeprecated() uint16 { 87 return 0 88 } 89 90 func (*GroupSizeEncoding) NumInGroupMinValue() uint16 { 91 return 0 92 } 93 94 func (*GroupSizeEncoding) NumInGroupMaxValue() uint16 { 95 return math.MaxUint16 - 1 96 } 97 98 func (*GroupSizeEncoding) NumInGroupNullValue() uint16 { 99 return math.MaxUint16 100 } 101 102 func (*GroupSizeEncoding) NumInGroupSinceVersion() uint16 { 103 return 0 104 } 105 106 func (g *GroupSizeEncoding) NumInGroupInActingVersion(actingVersion uint16) bool { 107 return actingVersion >= g.NumInGroupSinceVersion() 108 } 109 110 func (*GroupSizeEncoding) NumInGroupDeprecated() uint16 { 111 return 0 112 }