mirror of
https://github.com/ScuroNeko/mtg.git
synced 2026-08-31 15:54:03 +03:00
FILE / ScuroNeko/mtg
mtglib/internal/relay/pools.go
Исходный файл и его история в репозитории.
32 lines
536 B
Go
32 lines
536 B
Go
package relay
|
|
|
|
import (
|
|
"bufio"
|
|
"io"
|
|
"net"
|
|
"sync"
|
|
)
|
|
|
|
var syncPairPool = sync.Pool{
|
|
New: func() interface{} {
|
|
return &syncPair{
|
|
writer: bufio.NewWriterSize(nil, writerBufferSize),
|
|
copyBuf: make([]byte, copyBufferSize),
|
|
}
|
|
},
|
|
}
|
|
|
|
func acquireSyncPair(reader net.Conn, writer io.Writer) *syncPair {
|
|
sp := syncPairPool.Get().(*syncPair) // nolint: forcetypeassert
|
|
sp.writer.Reset(writer)
|
|
sp.reader = reader
|
|
|
|
return sp
|
|
}
|
|
|
|
func releaseSyncPair(sp *syncPair) {
|
|
sp.writer.Reset(nil)
|
|
sp.reader = nil
|
|
syncPairPool.Put(sp)
|
|
}
|