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  }