mirror of https://github.com/minio/minio.git
47 lines
1.1 KiB
Go
47 lines
1.1 KiB
Go
package storage
|
|
|
|
import (
|
|
"bytes"
|
|
"errors"
|
|
"io"
|
|
)
|
|
|
|
type Storage struct {
|
|
data map[string][]byte
|
|
}
|
|
|
|
func (storage *Storage) CopyObjectToWriter(w io.Writer, bucket string, object string) error {
|
|
// TODO synchronize access
|
|
// get object
|
|
key := bucket + ":" + object
|
|
if val, ok := storage.data[key]; ok {
|
|
objectBuffer := bytes.NewBuffer(val)
|
|
_, err := io.Copy(w, objectBuffer)
|
|
return err
|
|
} else {
|
|
return errors.New("Not Found")
|
|
}
|
|
}
|
|
|
|
func (storage *Storage) StoreObject(bucket string, object string, data io.Reader) {
|
|
key := bucket + ":" + object
|
|
var bytesBuffer bytes.Buffer
|
|
if _, ok := io.Copy(&bytesBuffer, data); ok == nil {
|
|
storage.data[key] = bytesBuffer.Bytes()
|
|
}
|
|
}
|
|
|
|
func Start() (chan<- string, <-chan error, *Storage) {
|
|
ctrlChannel := make(chan string)
|
|
errorChannel := make(chan error)
|
|
go start(ctrlChannel, errorChannel)
|
|
return ctrlChannel, errorChannel, &Storage{}
|
|
}
|
|
|
|
func start(ctrlChannel <-chan string, errorChannel chan<- error) {
|
|
errorChannel <- errors.New("STORAGE MSG")
|
|
errorChannel <- errors.New("STORAGE MSG")
|
|
errorChannel <- errors.New("STORAGE MSG")
|
|
close(errorChannel)
|
|
}
|