mirror of
https://github.com/foxcpp/maddy.git
synced 2025-04-07 06:57:37 +03:00
The module package is meant for interfaces implemented by modules and is not a catch-all for all utilities.
29 lines
579 B
Go
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
|
|
}
|