You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
785 B
42 lines
785 B
package mount
|
|
|
|
import (
|
|
"github.com/seaweedfs/seaweedfs/weed/pb/filer_pb"
|
|
"sync"
|
|
)
|
|
|
|
type LockedEntry struct {
|
|
*filer_pb.Entry
|
|
sync.RWMutex
|
|
}
|
|
|
|
func (le *LockedEntry) GetEntry() *filer_pb.Entry {
|
|
le.RLock()
|
|
defer le.RUnlock()
|
|
return le.Entry
|
|
}
|
|
|
|
func (le *LockedEntry) SetEntry(entry *filer_pb.Entry) {
|
|
le.Lock()
|
|
defer le.Unlock()
|
|
le.Entry = entry
|
|
}
|
|
|
|
func (le *LockedEntry) UpdateEntry(fn func(entry *filer_pb.Entry)) *filer_pb.Entry {
|
|
le.Lock()
|
|
defer le.Unlock()
|
|
fn(le.Entry)
|
|
return le.Entry
|
|
}
|
|
|
|
func (le *LockedEntry) GetChunks() []*filer_pb.FileChunk {
|
|
le.RLock()
|
|
defer le.RUnlock()
|
|
return le.Entry.Chunks
|
|
}
|
|
|
|
func (le *LockedEntry) AppendChunks(newChunks []*filer_pb.FileChunk) {
|
|
le.Lock()
|
|
defer le.Unlock()
|
|
le.Entry.Chunks = append(le.Entry.Chunks, newChunks...)
|
|
}
|