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

Loading…
Cancel
Save