impl map stream
This commit is contained in:
@@ -58,6 +58,7 @@ func TestImplementations(t *testing.T) {
|
|||||||
cases := make([]DB, 0)
|
cases := make([]DB, 0)
|
||||||
cases = append(cases, &mock{m: make(map[string][]byte)})
|
cases = append(cases, &mock{m: make(map[string][]byte)})
|
||||||
cases = append(cases, NewMap())
|
cases = append(cases, NewMap())
|
||||||
|
cases = append(cases, NewMapStream())
|
||||||
|
|
||||||
if cacheMem, err := NewCache(); err != nil {
|
if cacheMem, err := NewCache(); err != nil {
|
||||||
t.Errorf("cannot make cache/mem: %v", err)
|
t.Errorf("cannot make cache/mem: %v", err)
|
||||||
|
|||||||
28
map_stream.go
Executable file
28
map_stream.go
Executable file
@@ -0,0 +1,28 @@
|
|||||||
|
package storage
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"io"
|
||||||
|
"io/ioutil"
|
||||||
|
)
|
||||||
|
|
||||||
|
type MapStream struct {
|
||||||
|
*Map
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewMapStream() *MapStream {
|
||||||
|
return &MapStream{NewMap()}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *MapStream) GetStream(key string, ns ...string) (io.Reader, error) {
|
||||||
|
b, err := m.Get(key, ns...)
|
||||||
|
return bytes.NewReader(b), err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *MapStream) SetStream(key string, r io.Reader, ns ...string) error {
|
||||||
|
b, err := ioutil.ReadAll(r)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return m.Set(key, b, ns...)
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user