mirror of
https://github.com/xjasonlyu/tun2socks.git
synced 2025-10-07 17:51:16 +08:00
add go-tun2socks code
This commit is contained in:
35
core/buffer_pool.go
Normal file
35
core/buffer_pool.go
Normal file
@@ -0,0 +1,35 @@
|
||||
package core
|
||||
|
||||
import (
|
||||
"sync"
|
||||
)
|
||||
|
||||
var pool *sync.Pool
|
||||
|
||||
const BufSize = 2 * 1024
|
||||
|
||||
func SetBufferPool(p *sync.Pool) {
|
||||
pool = p
|
||||
}
|
||||
|
||||
func NewBytes(size int) []byte {
|
||||
if size <= BufSize {
|
||||
return pool.Get().([]byte)
|
||||
} else {
|
||||
return make([]byte, size)
|
||||
}
|
||||
}
|
||||
|
||||
func FreeBytes(b []byte) {
|
||||
if len(b) >= BufSize {
|
||||
pool.Put(b)
|
||||
}
|
||||
}
|
||||
|
||||
func init() {
|
||||
SetBufferPool(&sync.Pool{
|
||||
New: func() interface{} {
|
||||
return make([]byte, BufSize)
|
||||
},
|
||||
})
|
||||
}
|
Reference in New Issue
Block a user