feature_pool.go 697 B

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