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.
		
		
		
		
		
			
		
			
				
					
					
						
							74 lines
						
					
					
						
							1.5 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							74 lines
						
					
					
						
							1.5 KiB
						
					
					
				| package filer2 | |
| 
 | |
| import ( | |
| 	"os" | |
| 	"time" | |
| 
 | |
| 	"github.com/chrislusf/seaweedfs/weed/pb/filer_pb" | |
| 	"github.com/chrislusf/seaweedfs/weed/util" | |
| ) | |
| 
 | |
| type Attr struct { | |
| 	Mtime         time.Time   // time of last modification | |
| 	Crtime        time.Time   // time of creation (OS X only) | |
| 	Mode          os.FileMode // file mode | |
| 	Uid           uint32      // owner uid | |
| 	Gid           uint32      // group gid | |
| 	Mime          string      // mime type | |
| 	Replication   string      // replication | |
| 	Collection    string      // collection name | |
| 	TtlSec        int32       // ttl in seconds | |
| 	UserName      string | |
| 	GroupNames    []string | |
| 	SymlinkTarget string | |
| } | |
| 
 | |
| func (attr Attr) IsDirectory() bool { | |
| 	return attr.Mode&os.ModeDir > 0 | |
| } | |
| 
 | |
| type Entry struct { | |
| 	util.FullPath | |
| 
 | |
| 	Attr | |
| 	Extended map[string][]byte | |
| 
 | |
| 	// the following is for files | |
| 	Chunks []*filer_pb.FileChunk `json:"chunks,omitempty"` | |
| } | |
| 
 | |
| func (entry *Entry) Size() uint64 { | |
| 	return TotalSize(entry.Chunks) | |
| } | |
| 
 | |
| func (entry *Entry) Timestamp() time.Time { | |
| 	if entry.IsDirectory() { | |
| 		return entry.Crtime | |
| 	} else { | |
| 		return entry.Mtime | |
| 	} | |
| } | |
| 
 | |
| func (entry *Entry) ToProtoEntry() *filer_pb.Entry { | |
| 	if entry == nil { | |
| 		return nil | |
| 	} | |
| 	return &filer_pb.Entry{ | |
| 		Name:        entry.FullPath.Name(), | |
| 		IsDirectory: entry.IsDirectory(), | |
| 		Attributes:  EntryAttributeToPb(entry), | |
| 		Chunks:      entry.Chunks, | |
| 		Extended:    entry.Extended, | |
| 	} | |
| } | |
| 
 | |
| func (entry *Entry) ToProtoFullEntry() *filer_pb.FullEntry { | |
| 	if entry == nil { | |
| 		return nil | |
| 	} | |
| 	dir, _ := entry.FullPath.DirAndName() | |
| 	return &filer_pb.FullEntry{ | |
| 		Dir:   dir, | |
| 		Entry: entry.ToProtoEntry(), | |
| 	} | |
| }
 |