From e0361b1f9ff1f733aac79b7a222a99c003b7ffa7 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Sat, 2 Jan 2016 14:09:33 +0100 Subject: [PATCH] Add ContinuousReader --- backend/s3/cont_reader.go | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 backend/s3/cont_reader.go diff --git a/backend/s3/cont_reader.go b/backend/s3/cont_reader.go new file mode 100644 index 000000000..da0ef4000 --- /dev/null +++ b/backend/s3/cont_reader.go @@ -0,0 +1,23 @@ +package s3 + +import ( + "fmt" + "io" +) + +// ContinuousReader implements an io.Reader on top of an io.ReaderAt, advancing +// an offset. +type ContinuousReader struct { + R io.ReaderAt + Offset int64 +} + +func (c *ContinuousReader) Read(p []byte) (int, error) { + fmt.Printf("ContinuousReader %p: ReadAt(offset %v)\n", c, c.Offset) + n, err := c.R.ReadAt(p, c.Offset) + fmt.Printf("ContinuousReader %p: len(p) = %v, n %v, err %v\n", + c, len(p), n, err) + fmt.Printf(" %02x\n", p[:n]) + c.Offset += int64(n) + return n, err +}