.github
migrate to github actionsgo.mod
upgrade depsgo.sum
upgrade depsLICENSE.txt
Add LICENSE file via addalicense.comnio_test.go
aligning err handling more closely with io.Pipe, and breaking blocking calls on Close(), fixes #4nio.go
Updating CloseWithError documentation #4README.md
migrate to github actionssync.go
Updating CloseWithError documentation #4nio
Usage
The Buffer interface:
type Buffer interface {
Len() int64
Cap() int64
io.ReadWriter
}
nio's Copy method concurrently copies from an io.Reader to a supplied nio.Buffer, then from the nio.Buffer to an io.Writer. This way, blocking writes don't slow the io.Reader.
import (
"github.com/djherbis/buffer"
"github.com/djherbis/nio/v3"
)
buf := buffer.New(32*1024) // 32KB In memory Buffer
nio.Copy(w, r, buf) // Reads and Writes concurrently, buffering using buf.nio's Pipe method is a buffered version of io.Pipe The writer return once its data has been written to the Buffer. The reader returns with data off the Buffer.
import (
"github.com/djherbis/buffer"
"github.com/djherbis/nio/v3"
)
buf := buffer.New(32*1024) // 32KB In memory Buffer
r, w := nio.Pipe(buf)Installation
go get github.com/djherbis/nio/v3For some pre-built buffers grab:
go get github.com/djherbis/bufferMentions
GopherCon 2017: Peter Bourgon - Evolutionary Optimization with Go