github.com/batchcorp/thrift-iterator@v0.0.0-20220918180557-4c4a158fc6e9/protocol/binary/skip.go (about) 1 package binary 2 3 import "github.com/batchcorp/thrift-iterator/protocol" 4 5 func (iter *Iterator) skip(skipper func(), space []byte) []byte { 6 var tmp []byte 7 iter.skipped = make([]byte, 0, 8) 8 skipper() 9 tmp, iter.skipped = iter.skipped, nil 10 if iter.Error() != nil { 11 return nil 12 } 13 if len(space) > 0 { 14 return append(space, tmp...) 15 } 16 return tmp 17 } 18 19 func (iter *Iterator) Skip(ttype protocol.TType, space []byte) []byte { 20 return iter.skip(func() { iter.Discard(ttype) }, space) 21 } 22 23 func (iter *Iterator) SkipMessageHeader(space []byte) []byte { 24 return iter.skip(func() { iter.ReadMessageHeader() }, space) 25 } 26 27 func (iter *Iterator) SkipStruct(space []byte) []byte { 28 return iter.skip(func() { iter.Discard(protocol.TypeStruct) }, space) 29 } 30 31 func (iter *Iterator) SkipList(space []byte) []byte { 32 return iter.skip(func() { iter.Discard(protocol.TypeList) }, space) 33 } 34 35 func (iter *Iterator) SkipMap(space []byte) []byte { 36 return iter.skip(func() { iter.Discard(protocol.TypeMap) }, space) 37 } 38 39 func (iter *Iterator) SkipBinary(space []byte) []byte { 40 tmp := iter.ReadBinary() 41 if iter.Error() != nil { 42 return nil 43 } 44 if len(space) > 0 { 45 return append(space, tmp...) 46 } 47 return tmp 48 }