package donut import ( "io" ) // Collection of Donut specification interfaces // Donut interface type Donut interface { CreateBucket(bucket string) error GetObjectReader(bucket, object string) (io.ReadCloser, error) GetObjectWriter(bucket, object string) (ObjectWriter, error) GetObjectMetadata(bucket, object string) (map[string]string, error) ListBuckets() ([]string, error) ListObjects(bucket string) ([]string, error) } // Bucket interface type Bucket interface { GetNodes() ([]string, error) AddNode(nodeID, bucketID string) error } // Node interface type Node interface { CreateBucket(bucket string) error GetBuckets() ([]string, error) GetDonutMetadata(bucket, object string) (map[string]string, error) GetMetadata(bucket, object string) (map[string]string, error) GetReader(bucket, object string) (io.ReadCloser, error) GetWriter(bucket, object string) (Writer, error) ListObjects(bucket string) ([]string, error) } // ObjectWriter interface type ObjectWriter interface { Close() error CloseWithError(error) error GetMetadata() (map[string]string, error) SetMetadata(map[string]string) error Write([]byte) (int, error) } // Writer interface type Writer interface { ObjectWriter GetDonutMetadata() (map[string]string, error) SetDonutMetadata(map[string]string) error }