blob: 8d55fe03df7f907f9b2d37addc56255f205a1dcf [file] [log] [blame]
Giorgi Lekveishvili45b4d522020-03-19 21:11:18 +04001package chunk
2
3import "bytes"
4import "io"
5
6type Chunk interface {
7 SizeBytes() int
8 ReadSeeker() io.ReadSeeker
9 Writer() io.Writer
10}
11
12type InMemoryChunk struct {
13 payload *[]byte
14}
15
16func NewEmptyInMemoryChunk(sizeBytes int) Chunk {
17 payload := make([]byte, sizeBytes)
18 return &InMemoryChunk{payload: &payload}
19}
20
21func NewInMemoryChunk(p *[]byte) Chunk {
22 return &InMemoryChunk{payload: p}
23}
24
25func (c *InMemoryChunk) SizeBytes() int {
26 return len(*c.payload)
27}
28
29func (c *InMemoryChunk) ReadSeeker() io.ReadSeeker {
30 return bytes.NewReader(*c.payload)
31}
32
33func (c *InMemoryChunk) Writer() io.Writer {
34 return bytes.NewBuffer(*c.payload)
35}