FILE / ScuroNeko/mtg

mtglib/internal/relay/pools.go

Исходный файл и его история в репозитории.
FILE 219235e1810bccf70a159f6f3146ff2bf016d267
Files
mtg/mtglib/internal/relay/pools.go
T
2021-11-30 14:37:25 +03:00

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)
}