fdfa6e85c8
* first stab at PUT * only PUT * working on PUT * Put with LimitReader * start of Get * reorder of files and proto meta * working on Meta * working on Meta * add aware limit reader * add size from segment put * rm if for eof * update to proto meta * update gen proto file * working on get * working on get * working on get * working on list * working on delete * working on list * working on meta method * fix merge error and working on feedback from PR * update to proto file * rm size tuple * mv eof limit reader to new file * add toMeta * rm varible names * add updates from PR feedback * updates from PR feedback * updates from PR feedback * add toMeta size based on total size * update toMeta size calculation * rm passthrough * add default to config for segment size * fix get method ranger bug * add object support for nested stream proto * rm nested stream meta data * rm test for another PR
30 lines
633 B
Go
30 lines
633 B
Go
// Copyright (C) 2018 Storj Labs, Inc.
|
|
// See LICENSE for copying information.
|
|
|
|
package streams
|
|
|
|
import "io"
|
|
|
|
// EOFAwareLimitReader holds reader and status of EOF
|
|
type EOFAwareLimitReader struct {
|
|
reader io.Reader
|
|
eof bool
|
|
}
|
|
|
|
// EOFAwareReader keeps track of the state, has the internal reader reached EOF
|
|
func EOFAwareReader(r io.Reader) *EOFAwareLimitReader {
|
|
return &EOFAwareLimitReader{reader: r, eof: false}
|
|
}
|
|
|
|
func (r *EOFAwareLimitReader) Read(p []byte) (n int, err error) {
|
|
n, err = r.reader.Read(p)
|
|
if err == io.EOF {
|
|
r.eof = true
|
|
}
|
|
return n, err
|
|
}
|
|
|
|
func (r *EOFAwareLimitReader) isEOF() bool {
|
|
return r.eof
|
|
}
|