feature_pool.go 693 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package jsoniter
  2. import "io"
  3. func (cfg *frozenConfig) BorrowStream(writer io.Writer) *Stream {
  4. select {
  5. case stream := <-cfg.streamPool:
  6. stream.Reset(writer)
  7. return stream
  8. default:
  9. return NewStream(cfg, writer, 512)
  10. }
  11. }
  12. func (cfg *frozenConfig) ReturnStream(stream *Stream) {
  13. select {
  14. case cfg.streamPool <- stream:
  15. return
  16. default:
  17. return
  18. }
  19. }
  20. func (cfg *frozenConfig) BorrowIterator(data []byte) *Iterator {
  21. select {
  22. case iter := <- cfg.iteratorPool:
  23. iter.ResetBytes(data)
  24. return iter
  25. default:
  26. return ParseBytes(cfg, data)
  27. }
  28. }
  29. func (cfg *frozenConfig) ReturnIterator(iter *Iterator) {
  30. select {
  31. case cfg.iteratorPool <- iter:
  32. return
  33. default:
  34. return
  35. }
  36. }