Browse Source

rework multibuf copy

pull/1524/head^2
Darien Raymond 6 years ago
parent
commit
a3fd81dfff
No known key found for this signature in database
GPG Key ID: 7251FFA14BB18169
  1. 12
      transport/internet/kcp/connection.go

12
transport/internet/kcp/connection.go

@ -392,7 +392,11 @@ func (c *Connection) WriteMultiBuffer(mb buf.MultiBuffer) error {
}
}()
mbPtr := &mb
f := func(x *buf.MultiBuffer) buf.Supplier {
return func(bb []byte) (int, error) {
return x.Read(bb[:c.mss])
}
}(&mb)
for {
for {
@ -400,13 +404,11 @@ func (c *Connection) WriteMultiBuffer(mb buf.MultiBuffer) error {
return io.ErrClosedPipe
}
if !c.sendingWorker.Push(func(bb []byte) (int, error) {
return mbPtr.Read(bb[:c.mss])
}) {
if !c.sendingWorker.Push(f) {
break
}
updatePending = true
if mbPtr.IsEmpty() {
if mb.IsEmpty() {
return nil
}
}

Loading…
Cancel
Save