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

View file

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