80 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Go
		
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Go
		
	
	
package storagedriver
 | 
						|
 | 
						|
import "time"
 | 
						|
 | 
						|
// FileInfo returns information about a given path. Inspired by os.FileInfo,
 | 
						|
// it elides the base name method for a full path instead.
 | 
						|
type FileInfo interface {
 | 
						|
	// Path provides the full path of the target of this file info.
 | 
						|
	Path() string
 | 
						|
 | 
						|
	// Size returns current length in bytes of the file. The return value can
 | 
						|
	// be used to write to the end of the file at path. The value is
 | 
						|
	// meaningless if IsDir returns true.
 | 
						|
	Size() int64
 | 
						|
 | 
						|
	// ModTime returns the modification time for the file. For backends that
 | 
						|
	// don't have a modification time, the creation time should be returned.
 | 
						|
	ModTime() time.Time
 | 
						|
 | 
						|
	// IsDir returns true if the path is a directory.
 | 
						|
	IsDir() bool
 | 
						|
}
 | 
						|
 | 
						|
// NOTE(stevvooe): The next two types, FileInfoFields and FileInfoInternal
 | 
						|
// should only be used by storagedriver implementations. They should moved to
 | 
						|
// a "driver" package, similar to database/sql.
 | 
						|
 | 
						|
// FileInfoFields provides the exported fields for implementing FileInfo
 | 
						|
// interface in storagedriver implementations. It should be used with
 | 
						|
// InternalFileInfo.
 | 
						|
type FileInfoFields struct {
 | 
						|
	// Path provides the full path of the target of this file info.
 | 
						|
	Path string
 | 
						|
 | 
						|
	// Size is current length in bytes of the file. The value of this field
 | 
						|
	// can be used to write to the end of the file at path. The value is
 | 
						|
	// meaningless if IsDir is set to true.
 | 
						|
	Size int64
 | 
						|
 | 
						|
	// ModTime returns the modification time for the file. For backends that
 | 
						|
	// don't have a modification time, the creation time should be returned.
 | 
						|
	ModTime time.Time
 | 
						|
 | 
						|
	// IsDir returns true if the path is a directory.
 | 
						|
	IsDir bool
 | 
						|
}
 | 
						|
 | 
						|
// FileInfoInternal implements the FileInfo interface. This should only be
 | 
						|
// used by storagedriver implementations that don't have a specialized
 | 
						|
// FileInfo type.
 | 
						|
type FileInfoInternal struct {
 | 
						|
	FileInfoFields
 | 
						|
}
 | 
						|
 | 
						|
var _ FileInfo = FileInfoInternal{}
 | 
						|
var _ FileInfo = &FileInfoInternal{}
 | 
						|
 | 
						|
// Path provides the full path of the target of this file info.
 | 
						|
func (fi FileInfoInternal) Path() string {
 | 
						|
	return fi.FileInfoFields.Path
 | 
						|
}
 | 
						|
 | 
						|
// Size returns current length in bytes of the file. The return value can
 | 
						|
// be used to write to the end of the file at path. The value is
 | 
						|
// meaningless if IsDir returns true.
 | 
						|
func (fi FileInfoInternal) Size() int64 {
 | 
						|
	return fi.FileInfoFields.Size
 | 
						|
}
 | 
						|
 | 
						|
// ModTime returns the modification time for the file. For backends that
 | 
						|
// don't have a modification time, the creation time should be returned.
 | 
						|
func (fi FileInfoInternal) ModTime() time.Time {
 | 
						|
	return fi.FileInfoFields.ModTime
 | 
						|
}
 | 
						|
 | 
						|
// IsDir returns true if the path is a directory.
 | 
						|
func (fi FileInfoInternal) IsDir() bool {
 | 
						|
	return fi.FileInfoFields.IsDir
 | 
						|
}
 |