maddy/buffer/memory.go
fox.cpp d07d656472 buffer: Move to a separate package
The module package is meant for interfaces implemented by modules and is
not a catch-all for all utilities.
2019-08-25 20:23:13 +03:00

29 lines
579 B
Go

package buffer
import (
"io"
"io/ioutil"
)
// MemoryBuffer implements Buffer interface using byte slice.
type MemoryBuffer struct {
Slice []byte
}
func (mb MemoryBuffer) Open() (io.ReadCloser, error) {
return NewBytesReader(mb.Slice), nil
}
func (mb MemoryBuffer) Remove() error {
return nil
}
// BufferInMemory is a convenience function which creates MemoryBuffer with
// contents of the passed io.Reader.
func BufferInMemory(r io.Reader) (Buffer, error) {
blob, err := ioutil.ReadAll(r)
if err != nil {
return nil, err
}
return MemoryBuffer{Slice: blob}, nil
}