passing xattr

This commit is contained in:
Chris Lu 2019-12-17 21:10:26 -08:00
parent c42b023960
commit 14242e6c70
2 changed files with 27 additions and 2 deletions

View file

@ -30,6 +30,7 @@ type Entry struct {
FullPath
Attr
Extended map[string][]byte
// the following is for files
Chunks []*filer_pb.FileChunk `json:"chunks,omitempty"`
@ -56,6 +57,7 @@ func (entry *Entry) ToProtoEntry() *filer_pb.Entry {
IsDirectory: entry.IsDirectory(),
Attributes: EntryAttributeToPb(entry),
Chunks: entry.Chunks,
Extended: entry.Extended,
}
}

View file

@ -1,18 +1,21 @@
package filer2
import (
"bytes"
"fmt"
"os"
"time"
"fmt"
"github.com/chrislusf/seaweedfs/weed/pb/filer_pb"
"github.com/golang/protobuf/proto"
"github.com/chrislusf/seaweedfs/weed/pb/filer_pb"
)
func (entry *Entry) EncodeAttributesAndChunks() ([]byte, error) {
message := &filer_pb.Entry{
Attributes: EntryAttributeToPb(entry),
Chunks: entry.Chunks,
Extended: entry.Extended,
}
return proto.Marshal(message)
}
@ -27,6 +30,8 @@ func (entry *Entry) DecodeAttributesAndChunks(blob []byte) error {
entry.Attr = PbToEntryAttribute(message.Attributes)
entry.Extended = message.Extended
entry.Chunks = message.Chunks
return nil
@ -84,6 +89,10 @@ func EqualEntry(a, b *Entry) bool {
return false
}
if !eq(a.Extended, b.Extended) {
return false
}
for i := 0; i < len(a.Chunks); i++ {
if !proto.Equal(a.Chunks[i], b.Chunks[i]) {
return false
@ -91,3 +100,17 @@ func EqualEntry(a, b *Entry) bool {
}
return true
}
func eq(a, b map[string][]byte) bool {
if len(a) != len(b) {
return false
}
for k, v := range a {
if w, ok := b[k]; !ok || bytes.Equal(v, w) {
return false
}
}
return true
}