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