projects
/
arvados.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
20455: Use noopener everywhere on links and window.open
[arvados.git]
/
services
/
keepstore
/
streamwriterat.go
diff --git
a/services/keepstore/streamwriterat.go
b/services/keepstore/streamwriterat.go
index 365b55f233febb040f8faeb969fd0d257c804860..02dce6e216103b0976cc23d19ecaadfe2039c989 100644
(file)
--- a/
services/keepstore/streamwriterat.go
+++ b/
services/keepstore/streamwriterat.go
@@
-19,10
+19,16
@@
import (
// streamWriterAt writes the data to the provided io.Writer in
// sequential order.
//
// streamWriterAt writes the data to the provided io.Writer in
// sequential order.
//
+// streamWriterAt can also be wrapped with an io.OffsetWriter to
+// provide an asynchronous buffer: the caller can use the io.Writer
+// interface to write into a memory buffer and return without waiting
+// for the wrapped writer to catch up.
+//
// Close returns when all data has been written through.
type streamWriterAt struct {
writer io.Writer
buf []byte
// Close returns when all data has been written through.
type streamWriterAt struct {
writer io.Writer
buf []byte
+ writepos int // target offset if Write is called
partsize int // size of each part written through to writer
endpos int // portion of buf actually used, judging by WriteAt calls so far
partfilled []int // number of bytes written to each part so far
partsize int // size of each part written through to writer
endpos int // portion of buf actually used, judging by WriteAt calls so far
partfilled []int // number of bytes written to each part so far
@@
-81,7
+87,7
@@
func (swa *streamWriterAt) writeToWriter() {
}
}
}
}
-// WriteAt implements io.WriterAt.
+// WriteAt implements io.WriterAt.
WriteAt is goroutine-safe.
func (swa *streamWriterAt) WriteAt(p []byte, offset int64) (int, error) {
pos := int(offset)
n := 0
func (swa *streamWriterAt) WriteAt(p []byte, offset int64) (int, error) {
pos := int(offset)
n := 0