Code refactoring for bpa operator
[icn.git] / cmd / bpa-operator / vendor / github.com / json-iterator / go / pool.go
1 package jsoniter
2
3 import (
4         "io"
5 )
6
7 // IteratorPool a thread safe pool of iterators with same configuration
8 type IteratorPool interface {
9         BorrowIterator(data []byte) *Iterator
10         ReturnIterator(iter *Iterator)
11 }
12
13 // StreamPool a thread safe pool of streams with same configuration
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 }