...
1 package jsoniter
2
3 import (
4 "io"
5 )
6
7
8 type IteratorPool interface {
9 BorrowIterator(data []byte) *Iterator
10 ReturnIterator(iter *Iterator)
11 }
12
13
14 type StreamPool interface {
15 BorrowStream(writer io.Writer) *Stream
16 ReturnStream(stream *Stream)
17 }
18
19 func (cfg *frozenConfig) BorrowStream(writer io.Writer) *Stream {
20 stream := cfg.streamPool.Get().(*Stream)
21 stream.Reset(writer)
22 return stream
23 }
24
25 func (cfg *frozenConfig) ReturnStream(stream *Stream) {
26 stream.out = nil
27 stream.Error = nil
28 stream.Attachment = nil
29 cfg.streamPool.Put(stream)
30 }
31
32 func (cfg *frozenConfig) BorrowIterator(data []byte) *Iterator {
33 iter := cfg.iteratorPool.Get().(*Iterator)
34 iter.ResetBytes(data)
35 return iter
36 }
37
38 func (cfg *frozenConfig) ReturnIterator(iter *Iterator) {
39 iter.Error = nil
40 iter.Attachment = nil
41 cfg.iteratorPool.Put(iter)
42 }
43
View as plain text