vendor: Update github.com/xtaci/kcp
This commit is contained in:
50
vendor/github.com/xtaci/kcp-go/emitter.go
generated
vendored
Normal file
50
vendor/github.com/xtaci/kcp-go/emitter.go
generated
vendored
Normal file
@@ -0,0 +1,50 @@
|
||||
package kcp
|
||||
|
||||
import (
|
||||
"net"
|
||||
"sync/atomic"
|
||||
)
|
||||
|
||||
var defaultEmitter Emitter
|
||||
|
||||
const emitQueue = 8192
|
||||
|
||||
func init() {
|
||||
defaultEmitter.init()
|
||||
}
|
||||
|
||||
type (
|
||||
emitPacket struct {
|
||||
conn net.PacketConn
|
||||
to net.Addr
|
||||
data []byte
|
||||
recycle bool
|
||||
}
|
||||
|
||||
// Emitter is the global packet sender
|
||||
Emitter struct {
|
||||
ch chan emitPacket
|
||||
}
|
||||
)
|
||||
|
||||
func (e *Emitter) init() {
|
||||
e.ch = make(chan emitPacket, emitQueue)
|
||||
go e.emitTask()
|
||||
}
|
||||
|
||||
// keepon writing packets to kernel
|
||||
func (e *Emitter) emitTask() {
|
||||
for p := range e.ch {
|
||||
if n, err := p.conn.WriteTo(p.data, p.to); err == nil {
|
||||
atomic.AddUint64(&DefaultSnmp.OutSegs, 1)
|
||||
atomic.AddUint64(&DefaultSnmp.OutBytes, uint64(n))
|
||||
}
|
||||
if p.recycle {
|
||||
xmitBuf.Put(p.data)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (e *Emitter) emit(p emitPacket) {
|
||||
e.ch <- p
|
||||
}
|
||||
Reference in New Issue
Block a user