diff options
| author | Chris Lu <chris.lu@gmail.com> | 2020-03-21 23:48:11 -0700 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2020-03-21 23:48:11 -0700 |
| commit | 82bfad5b8615d9c2cd21efc059514b8899232a0f (patch) | |
| tree | 9ed9eca474638789c6f4b0d96b7cf25d656336c1 | |
| parent | 6ff9e2835e822d7f005ea9fd02966ff069d9efc1 (diff) | |
| download | seaweedfs-82bfad5b8615d9c2cd21efc059514b8899232a0f.tar.xz seaweedfs-82bfad5b8615d9c2cd21efc059514b8899232a0f.zip | |
refactoring
| -rw-r--r-- | weed/filer2/stream.go | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/weed/filer2/stream.go b/weed/filer2/stream.go index 6c5c84905..9c7a68b8e 100644 --- a/weed/filer2/stream.go +++ b/weed/filer2/stream.go @@ -51,7 +51,6 @@ type ChunkStreamReader struct { bufferOffset int64 bufferPos int chunkIndex int - totalSize int64 } var _ = io.ReadSeeker(&ChunkStreamReader{}) @@ -59,16 +58,11 @@ var _ = io.ReadSeeker(&ChunkStreamReader{}) func NewChunkStreamReader(masterClient *wdclient.MasterClient, chunks []*filer_pb.FileChunk) *ChunkStreamReader { chunkViews := ViewFromChunks(chunks, 0, math.MaxInt32) - var totalSize uint64 - for _, chunk := range chunkViews { - totalSize += chunk.Size - } return &ChunkStreamReader{ masterClient: masterClient, chunkViews: chunkViews, bufferOffset: -1, - totalSize: int64(totalSize), } } @@ -92,15 +86,20 @@ func (c *ChunkStreamReader) isBufferEmpty() bool { func (c *ChunkStreamReader) Seek(offset int64, whence int) (int64, error) { + var totalSize int64 + for _, chunk := range c.chunkViews { + totalSize += int64(chunk.Size) + } + var err error switch whence { case io.SeekStart: case io.SeekCurrent: offset += c.bufferOffset + int64(c.bufferPos) case io.SeekEnd: - offset = c.totalSize + offset + offset = totalSize + offset } - if offset > c.totalSize { + if offset > totalSize { err = io.ErrUnexpectedEOF } |
