...

Source file src/github.com/docker/distribution/registry/storage/driver/fileinfo.go

Documentation: github.com/docker/distribution/registry/storage/driver

     1  package driver
     2  
     3  import "time"
     4  
     5  // FileInfo returns information about a given path. Inspired by os.FileInfo,
     6  // it elides the base name method for a full path instead.
     7  type FileInfo interface {
     8  	// Path provides the full path of the target of this file info.
     9  	Path() string
    10  
    11  	// Size returns current length in bytes of the file. The return value can
    12  	// be used to write to the end of the file at path. The value is
    13  	// meaningless if IsDir returns true.
    14  	Size() int64
    15  
    16  	// ModTime returns the modification time for the file. For backends that
    17  	// don't have a modification time, the creation time should be returned.
    18  	ModTime() time.Time
    19  
    20  	// IsDir returns true if the path is a directory.
    21  	IsDir() bool
    22  }
    23  
    24  // NOTE(stevvooe): The next two types, FileInfoFields and FileInfoInternal
    25  // should only be used by storagedriver implementations. They should moved to
    26  // a "driver" package, similar to database/sql.
    27  
    28  // FileInfoFields provides the exported fields for implementing FileInfo
    29  // interface in storagedriver implementations. It should be used with
    30  // InternalFileInfo.
    31  type FileInfoFields struct {
    32  	// Path provides the full path of the target of this file info.
    33  	Path string
    34  
    35  	// Size is current length in bytes of the file. The value of this field
    36  	// can be used to write to the end of the file at path. The value is
    37  	// meaningless if IsDir is set to true.
    38  	Size int64
    39  
    40  	// ModTime returns the modification time for the file. For backends that
    41  	// don't have a modification time, the creation time should be returned.
    42  	ModTime time.Time
    43  
    44  	// IsDir returns true if the path is a directory.
    45  	IsDir bool
    46  }
    47  
    48  // FileInfoInternal implements the FileInfo interface. This should only be
    49  // used by storagedriver implementations that don't have a specialized
    50  // FileInfo type.
    51  type FileInfoInternal struct {
    52  	FileInfoFields
    53  }
    54  
    55  var _ FileInfo = FileInfoInternal{}
    56  var _ FileInfo = &FileInfoInternal{}
    57  
    58  // Path provides the full path of the target of this file info.
    59  func (fi FileInfoInternal) Path() string {
    60  	return fi.FileInfoFields.Path
    61  }
    62  
    63  // Size returns current length in bytes of the file. The return value can
    64  // be used to write to the end of the file at path. The value is
    65  // meaningless if IsDir returns true.
    66  func (fi FileInfoInternal) Size() int64 {
    67  	return fi.FileInfoFields.Size
    68  }
    69  
    70  // ModTime returns the modification time for the file. For backends that
    71  // don't have a modification time, the creation time should be returned.
    72  func (fi FileInfoInternal) ModTime() time.Time {
    73  	return fi.FileInfoFields.ModTime
    74  }
    75  
    76  // IsDir returns true if the path is a directory.
    77  func (fi FileInfoInternal) IsDir() bool {
    78  	return fi.FileInfoFields.IsDir
    79  }
    80  

View as plain text