-
Notifications
You must be signed in to change notification settings - Fork 204
/
reader_pool.go
49 lines (42 loc) · 1.59 KB
/
reader_pool.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
49
/**********************************************************\
| |
| hprose |
| |
| Official WebSite: http://www.hprose.com/ |
| http://www.hprose.org/ |
| |
\**********************************************************/
/**********************************************************\
* *
* rpc/reader_pool.go *
* *
* hprose reader pool for Go. *
* *
* LastModified: Oct 24, 2016 *
* Author: Ma Bingyao <andot@hprose.com> *
* *
\**********************************************************/
package rpc
import (
"sync"
"github.com/hprose/hprose-golang/io"
)
// ReaderPool is a reader pool for hprose client & service
type ReaderPool struct {
sync.Pool
}
func (pool *ReaderPool) acquireReader(buf []byte) (reader *io.Reader) {
reader = pool.Get().(*io.Reader)
reader.Init(buf)
return
}
func (pool *ReaderPool) releaseReader(reader *io.Reader) {
reader.Init(nil)
reader.Reset()
pool.Put(reader)
}
var defaultReaderPool = &ReaderPool{
Pool: sync.Pool{
New: func() interface{} { return new(io.Reader) },
},
}