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.
		
		
		
		
		
			
		
			
				
					
					
						
							44 lines
						
					
					
						
							860 B
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							44 lines
						
					
					
						
							860 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 | |
| } | |
| 
 | |
| // SetEntry sets the entry of the LockedEntry | |
| // entry should never be nil | |
| 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...) | |
| }
 |