Documentation ¶
Overview ¶
Package db provides a set type to track local/remote files with newness checks. We must do a certain amount of normalization in here. We will get fed paths with either native or wire-format separators and encodings depending on who calls us. We transform paths to wire-format (NFC and slashes) on the way to the database, and transform to native format (varying separator and encoding) on the way back out.
Index ¶
- Constants
- func BlocksToSize(num int) int64
- func DropFolder(db *leveldb.DB, folder string)
- func ListFolders(db *leveldb.DB) []string
- type BlockFinder
- type BlockMap
- type FileInfoTruncated
- type FileIntf
- type FileSet
- func (s *FileSet) Availability(file string) []protocol.DeviceID
- func (s *FileSet) Get(device protocol.DeviceID, file string) (protocol.FileInfo, bool)
- func (s *FileSet) GetGlobal(file string) (protocol.FileInfo, bool)
- func (s *FileSet) GetGlobalTruncated(file string) (FileInfoTruncated, bool)
- func (s *FileSet) LocalVersion(device protocol.DeviceID) int64
- func (s *FileSet) Replace(device protocol.DeviceID, fs []protocol.FileInfo)
- func (s *FileSet) ReplaceWithDelete(device protocol.DeviceID, fs []protocol.FileInfo, myID uint64)
- func (s *FileSet) Update(device protocol.DeviceID, fs []protocol.FileInfo)
- func (s *FileSet) WithGlobal(fn Iterator)
- func (s *FileSet) WithGlobalTruncated(fn Iterator)
- func (s *FileSet) WithHave(device protocol.DeviceID, fn Iterator)
- func (s *FileSet) WithHaveTruncated(device protocol.DeviceID, fn Iterator)
- func (s *FileSet) WithNeed(device protocol.DeviceID, fn Iterator)
- func (s *FileSet) WithNeedTruncated(device protocol.DeviceID, fn Iterator)
- func (s *FileSet) WithPrefixedGlobalTruncated(prefix string, fn Iterator)
- type Iterator
- type NamespacedKV
- func (n NamespacedKV) Delete(key string)
- func (n *NamespacedKV) Int64(key string) (int64, bool)
- func (n *NamespacedKV) PutInt64(key string, val int64)
- func (n *NamespacedKV) PutString(key, val string)
- func (n *NamespacedKV) PutTime(key string, val time.Time)
- func (n NamespacedKV) String(key string) (string, bool)
- func (n NamespacedKV) Time(key string) (time.Time, bool)
Constants ¶
const ( KeyTypeDevice = iota KeyTypeGlobal KeyTypeBlock KeyTypeDeviceStatistic KeyTypeFolderStatistic )
Variables ¶
This section is empty.
Functions ¶
func BlocksToSize ¶
func DropFolder ¶
DropFolder clears out all information related to the given folder from the database.
func ListFolders ¶
ListFolders returns the folder IDs seen in the database.
Types ¶
type BlockFinder ¶
type BlockFinder struct {
// contains filtered or unexported fields
}
func NewBlockFinder ¶
func NewBlockFinder(db *leveldb.DB, cfg *config.Wrapper) *BlockFinder
func (*BlockFinder) Changed ¶
func (f *BlockFinder) Changed(cfg config.Configuration) error
Implements config.Handler interface
func (*BlockFinder) Fix ¶
func (f *BlockFinder) Fix(folder, file string, index int32, oldHash, newHash []byte) error
A method for repairing incorrect blockmap entries, removes the old entry and replaces it with a new entry for the given block
func (*BlockFinder) Iterate ¶
An iterator function which iterates over all matching blocks for the given hash. The iterator function has to return either true (if they are happy with the block) or false to continue iterating for whatever reason. The iterator finally returns the result, whether or not a satisfying block was eventually found.
type BlockMap ¶
type BlockMap struct {
// contains filtered or unexported fields
}
type FileInfoTruncated ¶
func ToTruncated ¶ added in v0.10.22
func ToTruncated(file protocol.FileInfo) FileInfoTruncated
func (FileInfoTruncated) Size ¶
func (f FileInfoTruncated) Size() int64
func (*FileInfoTruncated) UnmarshalXDR ¶
func (f *FileInfoTruncated) UnmarshalXDR(bs []byte) error
type FileIntf ¶
type FileIntf interface { Size() int64 IsDeleted() bool IsInvalid() bool IsDirectory() bool IsSymlink() bool HasPermissionBits() bool }
FileIntf is the set of methods implemented by both protocol.FileInfo and protocol.FileInfoTruncated.
type FileSet ¶
type FileSet struct {
// contains filtered or unexported fields
}
func (*FileSet) GetGlobalTruncated ¶
func (s *FileSet) GetGlobalTruncated(file string) (FileInfoTruncated, bool)
func (*FileSet) ReplaceWithDelete ¶
func (*FileSet) WithGlobal ¶
func (*FileSet) WithGlobalTruncated ¶
func (*FileSet) WithHaveTruncated ¶
func (*FileSet) WithNeedTruncated ¶
func (*FileSet) WithPrefixedGlobalTruncated ¶ added in v0.10.25
type Iterator ¶
The Iterator is called with either a protocol.FileInfo or a protocol.FileInfoTruncated (depending on the method) and returns true to continue iteration, false to stop.
type NamespacedKV ¶ added in v0.10.24
type NamespacedKV struct {
// contains filtered or unexported fields
}
NamespacedKV is a simple key-value store using a specific namespace within a leveldb.
func NewNamespacedKV ¶ added in v0.10.24
func NewNamespacedKV(db *leveldb.DB, prefix string) *NamespacedKV
NewNamespacedKV returns a new NamespacedKV that lives in the namespace specified by the prefix.
func (NamespacedKV) Delete ¶ added in v0.10.24
func (n NamespacedKV) Delete(key string)
Delete deletes the specified key. It is allowed to delete a nonexistent key.
func (*NamespacedKV) Int64 ¶ added in v0.10.24
func (n *NamespacedKV) Int64(key string) (int64, bool)
Int64 returns the stored value interpreted as an int64 and a boolean that is false if no value was stored at the key.
func (*NamespacedKV) PutInt64 ¶ added in v0.10.24
func (n *NamespacedKV) PutInt64(key string, val int64)
PutInt64 stores a new int64. Any existing value (even if of another type) is overwritten.
func (*NamespacedKV) PutString ¶ added in v0.10.24
func (n *NamespacedKV) PutString(key, val string)
PutString stores a new string. Any existing value (even if of another type) is overwritten.
func (*NamespacedKV) PutTime ¶ added in v0.10.24
func (n *NamespacedKV) PutTime(key string, val time.Time)
PutTime stores a new time.Time. Any existing value (even if of another type) is overwritten.