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
- Variables
- func DropDeltaIndexIDs(db *Lowlevel)
- func DropFolder(db *Lowlevel, folder string)
- func UpdateSchema(db *Lowlevel) error
- type BlockFinder
- type BlockList
- func (*BlockList) Descriptor() ([]byte, []int)
- func (m *BlockList) Marshal() (dAtA []byte, err error)
- func (m *BlockList) MarshalTo(dAtA []byte) (int, error)
- func (m *BlockList) MarshalToSizedBuffer(dAtA []byte) (int, error)
- func (*BlockList) ProtoMessage()
- func (m *BlockList) ProtoSize() (n int)
- func (m *BlockList) Reset()
- func (m *BlockList) String() string
- func (m *BlockList) Unmarshal(dAtA []byte) error
- func (m *BlockList) XXX_DiscardUnknown()
- func (m *BlockList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
- func (m *BlockList) XXX_Merge(src proto.Message)
- func (m *BlockList) XXX_Size() int
- func (m *BlockList) XXX_Unmarshal(b []byte) error
- type BlocksHashOnly
- func (*BlocksHashOnly) Descriptor() ([]byte, []int)
- func (m *BlocksHashOnly) Marshal() (dAtA []byte, err error)
- func (m *BlocksHashOnly) MarshalTo(dAtA []byte) (int, error)
- func (m *BlocksHashOnly) MarshalToSizedBuffer(dAtA []byte) (int, error)
- func (*BlocksHashOnly) ProtoMessage()
- func (m *BlocksHashOnly) ProtoSize() (n int)
- func (m *BlocksHashOnly) Reset()
- func (m *BlocksHashOnly) String() string
- func (m *BlocksHashOnly) Unmarshal(dAtA []byte) error
- func (m *BlocksHashOnly) XXX_DiscardUnknown()
- func (m *BlocksHashOnly) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
- func (m *BlocksHashOnly) XXX_Merge(src proto.Message)
- func (m *BlocksHashOnly) XXX_Size() int
- func (m *BlocksHashOnly) XXX_Unmarshal(b []byte) error
- type Counts
- func (c Counts) Add(other Counts) Counts
- func (*Counts) Descriptor() ([]byte, []int)
- func (m *Counts) Marshal() (dAtA []byte, err error)
- func (m *Counts) MarshalTo(dAtA []byte) (int, error)
- func (m *Counts) MarshalToSizedBuffer(dAtA []byte) (int, error)
- func (*Counts) ProtoMessage()
- func (m *Counts) ProtoSize() (n int)
- func (m *Counts) Reset()
- func (m *Counts) String() string
- func (c Counts) TotalItems() int32
- func (m *Counts) Unmarshal(dAtA []byte) error
- func (m *Counts) XXX_DiscardUnknown()
- func (m *Counts) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
- func (m *Counts) XXX_Merge(src proto.Message)
- func (m *Counts) XXX_Size() int
- func (m *Counts) XXX_Unmarshal(b []byte) error
- type CountsSet
- func (*CountsSet) Descriptor() ([]byte, []int)
- func (m *CountsSet) Marshal() (dAtA []byte, err error)
- func (m *CountsSet) MarshalTo(dAtA []byte) (int, error)
- func (m *CountsSet) MarshalToSizedBuffer(dAtA []byte) (int, error)
- func (*CountsSet) ProtoMessage()
- func (m *CountsSet) ProtoSize() (n int)
- func (m *CountsSet) Reset()
- func (m *CountsSet) String() string
- func (m *CountsSet) Unmarshal(dAtA []byte) error
- func (m *CountsSet) XXX_DiscardUnknown()
- func (m *CountsSet) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
- func (m *CountsSet) XXX_Merge(src proto.Message)
- func (m *CountsSet) XXX_Size() int
- func (m *CountsSet) XXX_Unmarshal(b []byte) error
- type FileInfoTruncated
- func (f FileInfoTruncated) BlockSize() int
- func (f FileInfoTruncated) ConvertToDeletedFileInfo(by protocol.ShortID, localFlags uint32) protocol.FileInfo
- func (f FileInfoTruncated) ConvertToIgnoredFileInfo(by protocol.ShortID) protocol.FileInfo
- func (*FileInfoTruncated) Descriptor() ([]byte, []int)
- func (f FileInfoTruncated) FileLocalFlags() uint32
- func (f FileInfoTruncated) FileModifiedBy() protocol.ShortID
- func (f FileInfoTruncated) FileName() string
- func (f FileInfoTruncated) FilePermissions() uint32
- func (f FileInfoTruncated) FileSize() int64
- func (f FileInfoTruncated) FileType() protocol.FileInfoType
- func (f FileInfoTruncated) FileVersion() protocol.Vector
- func (f FileInfoTruncated) HasPermissionBits() bool
- func (f FileInfoTruncated) IsDeleted() bool
- func (f FileInfoTruncated) IsDirectory() bool
- func (f FileInfoTruncated) IsIgnored() bool
- func (f FileInfoTruncated) IsInvalid() bool
- func (f FileInfoTruncated) IsReceiveOnlyChanged() bool
- func (f FileInfoTruncated) IsSymlink() bool
- func (f FileInfoTruncated) IsUnsupported() bool
- func (m *FileInfoTruncated) Marshal() (dAtA []byte, err error)
- func (m *FileInfoTruncated) MarshalTo(dAtA []byte) (int, error)
- func (m *FileInfoTruncated) MarshalToSizedBuffer(dAtA []byte) (int, error)
- func (f FileInfoTruncated) ModTime() time.Time
- func (f FileInfoTruncated) MustRescan() bool
- func (*FileInfoTruncated) ProtoMessage()
- func (m *FileInfoTruncated) ProtoSize() (n int)
- func (m *FileInfoTruncated) Reset()
- func (f FileInfoTruncated) SequenceNo() int64
- func (f FileInfoTruncated) ShouldConflict() bool
- func (f FileInfoTruncated) String() string
- func (m *FileInfoTruncated) Unmarshal(dAtA []byte) error
- func (m *FileInfoTruncated) XXX_DiscardUnknown()
- func (m *FileInfoTruncated) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
- func (m *FileInfoTruncated) XXX_Merge(src proto.Message)
- func (m *FileInfoTruncated) XXX_Size() int
- func (m *FileInfoTruncated) XXX_Unmarshal(b []byte) error
- type FileIntf
- type FileSet
- func (s *FileSet) Drop(device protocol.DeviceID)
- func (s *FileSet) IndexID(device protocol.DeviceID) protocol.IndexID
- func (s *FileSet) ListDevices() []protocol.DeviceID
- func (s *FileSet) MtimeFS() *fs.MtimeFS
- func (s *FileSet) Sequence(device protocol.DeviceID) int64
- func (s *FileSet) SetIndexID(device protocol.DeviceID, id protocol.IndexID)
- func (s *FileSet) Snapshot() *Snapshot
- func (s *FileSet) Update(device protocol.DeviceID, fs []protocol.FileInfo)
- type FileVersion
- func (*FileVersion) Descriptor() ([]byte, []int)
- func (m *FileVersion) Marshal() (dAtA []byte, err error)
- func (m *FileVersion) MarshalTo(dAtA []byte) (int, error)
- func (m *FileVersion) MarshalToSizedBuffer(dAtA []byte) (int, error)
- func (*FileVersion) ProtoMessage()
- func (m *FileVersion) ProtoSize() (n int)
- func (m *FileVersion) Reset()
- func (m *FileVersion) String() string
- func (m *FileVersion) Unmarshal(dAtA []byte) error
- func (m *FileVersion) XXX_DiscardUnknown()
- func (m *FileVersion) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
- func (m *FileVersion) XXX_Merge(src proto.Message)
- func (m *FileVersion) XXX_Size() int
- func (m *FileVersion) XXX_Unmarshal(b []byte) error
- type Iterator
- type Lowlevel
- type NamespacedKV
- func (n NamespacedKV) Bool(key string) (bool, bool, error)
- func (n NamespacedKV) Bytes(key string) ([]byte, bool, error)
- func (n NamespacedKV) Delete(key string) error
- func (n *NamespacedKV) Int64(key string) (int64, bool, error)
- func (n *NamespacedKV) PutBool(key string, val bool) error
- func (n *NamespacedKV) PutBytes(key string, val []byte) error
- func (n *NamespacedKV) PutInt64(key string, val int64) error
- func (n *NamespacedKV) PutString(key, val string) error
- func (n *NamespacedKV) PutTime(key string, val time.Time) error
- func (n NamespacedKV) String(key string) (string, bool, error)
- func (n NamespacedKV) Time(key string) (time.Time, bool, error)
- type Snapshot
- func (s *Snapshot) Availability(file string) []protocol.DeviceID
- func (s *Snapshot) Get(device protocol.DeviceID, file string) (protocol.FileInfo, bool)
- func (s *Snapshot) GetGlobal(file string) (protocol.FileInfo, bool)
- func (s *Snapshot) GetGlobalTruncated(file string) (FileInfoTruncated, bool)
- func (s *Snapshot) GlobalSize() Counts
- func (s *Snapshot) LocalChangedFiles(page, perpage int) []FileInfoTruncated
- func (s *Snapshot) LocalSize() Counts
- func (s *Snapshot) NeedSize() Counts
- func (s *Snapshot) ReceiveOnlyChangedSize() Counts
- func (s *Snapshot) Release()
- func (s *Snapshot) RemoteNeedFolderFiles(device protocol.DeviceID, page, perpage int) []FileInfoTruncated
- func (s *Snapshot) RemoteSequence() int64
- func (s *Snapshot) Sequence(device protocol.DeviceID) int64
- func (s *Snapshot) WithGlobal(fn Iterator)
- func (s *Snapshot) WithGlobalTruncated(fn Iterator)
- func (s *Snapshot) WithHave(device protocol.DeviceID, fn Iterator)
- func (s *Snapshot) WithHaveSequence(startSeq int64, fn Iterator)
- func (s *Snapshot) WithHaveTruncated(device protocol.DeviceID, fn Iterator)
- func (s *Snapshot) WithNeed(device protocol.DeviceID, fn Iterator)
- func (s *Snapshot) WithNeedTruncated(device protocol.DeviceID, fn Iterator)
- func (s *Snapshot) WithPrefixedGlobalTruncated(prefix string, fn Iterator)
- func (s *Snapshot) WithPrefixedHaveTruncated(device protocol.DeviceID, prefix string, fn Iterator)
- type VersionList
- func (*VersionList) Descriptor() ([]byte, []int)
- func (vl VersionList) Get(device []byte) (FileVersion, bool)
- func (m *VersionList) Marshal() (dAtA []byte, err error)
- func (m *VersionList) MarshalTo(dAtA []byte) (int, error)
- func (m *VersionList) MarshalToSizedBuffer(dAtA []byte) (int, error)
- func (*VersionList) ProtoMessage()
- func (m *VersionList) ProtoSize() (n int)
- func (m *VersionList) Reset()
- func (vl VersionList) String() string
- func (m *VersionList) Unmarshal(dAtA []byte) error
- func (m *VersionList) XXX_DiscardUnknown()
- func (m *VersionList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
- func (m *VersionList) XXX_Merge(src proto.Message)
- func (m *VersionList) XXX_Size() int
- func (m *VersionList) XXX_Unmarshal(b []byte) error
Constants ¶
const ( // KeyTypeDevice <int32 folder ID> <int32 device ID> <file name> = FileInfo KeyTypeDevice = 0 // KeyTypeGlobal <int32 folder ID> <file name> = VersionList KeyTypeGlobal = 1 // KeyTypeBlock <int32 folder ID> <32 bytes hash> <§file name> = int32 (block index) KeyTypeBlock = 2 // KeyTypeDeviceStatistic <device ID as string> <some string> = some value KeyTypeDeviceStatistic = 3 // KeyTypeFolderStatistic <folder ID as string> <some string> = some value KeyTypeFolderStatistic = 4 // KeyTypeVirtualMtime <int32 folder ID> <file name> = dbMtime KeyTypeVirtualMtime = 5 // KeyTypeFolderIdx <int32 id> = string value KeyTypeFolderIdx = 6 // KeyTypeDeviceIdx <int32 id> = string value KeyTypeDeviceIdx = 7 // KeyTypeIndexID <int32 device ID> <int32 folder ID> = protocol.IndexID KeyTypeIndexID = 8 // KeyTypeFolderMeta <int32 folder ID> = CountsSet KeyTypeFolderMeta = 9 // KeyTypeMiscData <some string> = some value KeyTypeMiscData = 10 // KeyTypeSequence <int32 folder ID> <int64 sequence number> = KeyTypeDevice key KeyTypeSequence = 11 // KeyTypeNeed <int32 folder ID> <file name> = <nothing> KeyTypeNeed = 12 // KeyTypeBlockList <block list hash> = BlockList KeyTypeBlockList = 13 )
Variables ¶
Functions ¶
func DropDeltaIndexIDs ¶ added in v0.14.52
func DropDeltaIndexIDs(db *Lowlevel)
DropDeltaIndexIDs removes all delta index IDs from the database. This will cause a full index transmission on the next connection.
func DropFolder ¶
DropFolder clears out all information related to the given folder from the database.
func UpdateSchema ¶ added in v0.14.52
Types ¶
type BlockFinder ¶
type BlockFinder struct {
// contains filtered or unexported fields
}
func NewBlockFinder ¶
func NewBlockFinder(db *Lowlevel) *BlockFinder
func (*BlockFinder) Iterate ¶
func (f *BlockFinder) Iterate(folders []string, hash []byte, iterFn func(string, string, int32) bool) bool
Iterate takes 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.
func (*BlockFinder) String ¶
func (f *BlockFinder) String() string
type BlockList ¶ added in v1.4.0
type BlockList struct {
Blocks []protocol.BlockInfo `protobuf:"bytes,1,rep,name=Blocks,proto3" json:"Blocks"`
}
BlockList is the structure used to store block lists
func (*BlockList) Descriptor ¶ added in v1.4.0
func (*BlockList) MarshalToSizedBuffer ¶ added in v1.4.0
func (*BlockList) ProtoMessage ¶ added in v1.4.0
func (*BlockList) ProtoMessage()
func (*BlockList) XXX_DiscardUnknown ¶ added in v1.4.0
func (m *BlockList) XXX_DiscardUnknown()
func (*BlockList) XXX_Marshal ¶ added in v1.4.0
func (*BlockList) XXX_Unmarshal ¶ added in v1.4.0
type BlocksHashOnly ¶ added in v1.4.0
type BlocksHashOnly struct {
BlocksHash []byte `protobuf:"bytes,18,opt,name=blocks_hash,json=blocksHash,proto3" json:"blocks_hash,omitempty"`
}
BlocksHashOnly is used to only unmarshal the block list hash from a FileInfo
func (*BlocksHashOnly) Descriptor ¶ added in v1.4.0
func (*BlocksHashOnly) Descriptor() ([]byte, []int)
func (*BlocksHashOnly) Marshal ¶ added in v1.4.0
func (m *BlocksHashOnly) Marshal() (dAtA []byte, err error)
func (*BlocksHashOnly) MarshalTo ¶ added in v1.4.0
func (m *BlocksHashOnly) MarshalTo(dAtA []byte) (int, error)
func (*BlocksHashOnly) MarshalToSizedBuffer ¶ added in v1.4.0
func (m *BlocksHashOnly) MarshalToSizedBuffer(dAtA []byte) (int, error)
func (*BlocksHashOnly) ProtoMessage ¶ added in v1.4.0
func (*BlocksHashOnly) ProtoMessage()
func (*BlocksHashOnly) ProtoSize ¶ added in v1.4.0
func (m *BlocksHashOnly) ProtoSize() (n int)
func (*BlocksHashOnly) Reset ¶ added in v1.4.0
func (m *BlocksHashOnly) Reset()
func (*BlocksHashOnly) String ¶ added in v1.4.0
func (m *BlocksHashOnly) String() string
func (*BlocksHashOnly) Unmarshal ¶ added in v1.4.0
func (m *BlocksHashOnly) Unmarshal(dAtA []byte) error
func (*BlocksHashOnly) XXX_DiscardUnknown ¶ added in v1.4.0
func (m *BlocksHashOnly) XXX_DiscardUnknown()
func (*BlocksHashOnly) XXX_Marshal ¶ added in v1.4.0
func (m *BlocksHashOnly) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
func (*BlocksHashOnly) XXX_Merge ¶ added in v1.4.0
func (m *BlocksHashOnly) XXX_Merge(src proto.Message)
func (*BlocksHashOnly) XXX_Size ¶ added in v1.4.0
func (m *BlocksHashOnly) XXX_Size() int
func (*BlocksHashOnly) XXX_Unmarshal ¶ added in v1.4.0
func (m *BlocksHashOnly) XXX_Unmarshal(b []byte) error
type Counts ¶ added in v0.14.10
type Counts struct { Files int32 `protobuf:"varint,1,opt,name=files,proto3" json:"files,omitempty"` Directories int32 `protobuf:"varint,2,opt,name=directories,proto3" json:"directories,omitempty"` Symlinks int32 `protobuf:"varint,3,opt,name=symlinks,proto3" json:"symlinks,omitempty"` Deleted int32 `protobuf:"varint,4,opt,name=deleted,proto3" json:"deleted,omitempty"` Bytes int64 `protobuf:"varint,5,opt,name=bytes,proto3" json:"bytes,omitempty"` Sequence int64 `protobuf:"varint,6,opt,name=sequence,proto3" json:"sequence,omitempty"` DeviceID []byte `protobuf:"bytes,17,opt,name=deviceID,proto3" json:"deviceID,omitempty"` LocalFlags uint32 `protobuf:"varint,18,opt,name=localFlags,proto3" json:"localFlags,omitempty"` }
For each folder and device we keep one of these to track the current counts and sequence. We also keep one for the global state of the folder.
func (*Counts) Descriptor ¶ added in v0.14.43
func (*Counts) MarshalToSizedBuffer ¶ added in v1.3.0
func (*Counts) ProtoMessage ¶ added in v0.14.43
func (*Counts) ProtoMessage()
func (Counts) TotalItems ¶ added in v1.0.0
func (*Counts) XXX_DiscardUnknown ¶ added in v1.0.1
func (m *Counts) XXX_DiscardUnknown()
func (*Counts) XXX_Marshal ¶ added in v1.0.1
func (*Counts) XXX_Unmarshal ¶ added in v1.0.1
type CountsSet ¶ added in v0.14.43
type CountsSet struct { Counts []Counts `protobuf:"bytes,1,rep,name=counts,proto3" json:"counts"` Created int64 `protobuf:"varint,2,opt,name=created,proto3" json:"created,omitempty"` }
func (*CountsSet) Descriptor ¶ added in v0.14.43
func (*CountsSet) MarshalToSizedBuffer ¶ added in v1.3.0
func (*CountsSet) ProtoMessage ¶ added in v0.14.43
func (*CountsSet) ProtoMessage()
func (*CountsSet) XXX_DiscardUnknown ¶ added in v1.0.1
func (m *CountsSet) XXX_DiscardUnknown()
func (*CountsSet) XXX_Marshal ¶ added in v1.0.1
func (*CountsSet) XXX_Unmarshal ¶ added in v1.0.1
type FileInfoTruncated ¶
type FileInfoTruncated struct { Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` Size int64 `protobuf:"varint,3,opt,name=size,proto3" json:"size,omitempty"` ModifiedS int64 `protobuf:"varint,5,opt,name=modified_s,json=modifiedS,proto3" json:"modified_s,omitempty"` ModifiedBy github_com_syncthing_syncthing_lib_protocol.ShortID `` /* 146-byte string literal not displayed */ Version protocol.Vector `protobuf:"bytes,9,opt,name=version,proto3" json:"version"` Sequence int64 `protobuf:"varint,10,opt,name=sequence,proto3" json:"sequence,omitempty"` // repeated BlockInfo Blocks = 16 SymlinkTarget string `protobuf:"bytes,17,opt,name=symlink_target,json=symlinkTarget,proto3" json:"symlink_target,omitempty"` BlocksHash []byte `protobuf:"bytes,18,opt,name=blocks_hash,json=blocksHash,proto3" json:"blocks_hash,omitempty"` Type protocol.FileInfoType `protobuf:"varint,2,opt,name=type,proto3,enum=protocol.FileInfoType" json:"type,omitempty"` Permissions uint32 `protobuf:"varint,4,opt,name=permissions,proto3" json:"permissions,omitempty"` ModifiedNs int32 `protobuf:"varint,11,opt,name=modified_ns,json=modifiedNs,proto3" json:"modified_ns,omitempty"` RawBlockSize int32 `protobuf:"varint,13,opt,name=block_size,json=blockSize,proto3" json:"block_size,omitempty"` // see bep.proto LocalFlags uint32 `protobuf:"varint,1000,opt,name=local_flags,json=localFlags,proto3" json:"local_flags,omitempty"` Deleted bool `protobuf:"varint,6,opt,name=deleted,proto3" json:"deleted,omitempty"` RawInvalid bool `protobuf:"varint,7,opt,name=invalid,proto3" json:"invalid,omitempty"` NoPermissions bool `protobuf:"varint,8,opt,name=no_permissions,json=noPermissions,proto3" json:"no_permissions,omitempty"` }
Must be the same as FileInfo but without the blocks field
func (FileInfoTruncated) BlockSize ¶ added in v0.14.48
func (f FileInfoTruncated) BlockSize() int
func (FileInfoTruncated) ConvertToDeletedFileInfo ¶ added in v1.4.0
func (FileInfoTruncated) ConvertToIgnoredFileInfo ¶ added in v0.14.49
func (f FileInfoTruncated) ConvertToIgnoredFileInfo(by protocol.ShortID) protocol.FileInfo
func (*FileInfoTruncated) Descriptor ¶ added in v0.14.0
func (*FileInfoTruncated) Descriptor() ([]byte, []int)
func (FileInfoTruncated) FileLocalFlags ¶ added in v0.14.50
func (f FileInfoTruncated) FileLocalFlags() uint32
func (FileInfoTruncated) FileModifiedBy ¶ added in v1.3.2
func (f FileInfoTruncated) FileModifiedBy() protocol.ShortID
func (FileInfoTruncated) FileName ¶ added in v0.14.0
func (f FileInfoTruncated) FileName() string
func (FileInfoTruncated) FilePermissions ¶ added in v1.3.2
func (f FileInfoTruncated) FilePermissions() uint32
func (FileInfoTruncated) FileSize ¶ added in v0.14.0
func (f FileInfoTruncated) FileSize() int64
func (FileInfoTruncated) FileType ¶ added in v1.3.2
func (f FileInfoTruncated) FileType() protocol.FileInfoType
func (FileInfoTruncated) FileVersion ¶ added in v0.14.49
func (f FileInfoTruncated) FileVersion() protocol.Vector
func (FileInfoTruncated) HasPermissionBits ¶ added in v0.14.0
func (f FileInfoTruncated) HasPermissionBits() bool
func (FileInfoTruncated) IsDeleted ¶ added in v0.14.0
func (f FileInfoTruncated) IsDeleted() bool
func (FileInfoTruncated) IsDirectory ¶ added in v0.14.0
func (f FileInfoTruncated) IsDirectory() bool
func (FileInfoTruncated) IsIgnored ¶ added in v0.14.49
func (f FileInfoTruncated) IsIgnored() bool
func (FileInfoTruncated) IsInvalid ¶ added in v0.14.0
func (f FileInfoTruncated) IsInvalid() bool
func (FileInfoTruncated) IsReceiveOnlyChanged ¶ added in v0.14.50
func (f FileInfoTruncated) IsReceiveOnlyChanged() bool
func (FileInfoTruncated) IsSymlink ¶ added in v0.14.0
func (f FileInfoTruncated) IsSymlink() bool
func (FileInfoTruncated) IsUnsupported ¶ added in v0.14.50
func (f FileInfoTruncated) IsUnsupported() bool
func (*FileInfoTruncated) Marshal ¶ added in v0.14.0
func (m *FileInfoTruncated) Marshal() (dAtA []byte, err error)
func (*FileInfoTruncated) MarshalTo ¶ added in v0.14.0
func (m *FileInfoTruncated) MarshalTo(dAtA []byte) (int, error)
func (*FileInfoTruncated) MarshalToSizedBuffer ¶ added in v1.3.0
func (m *FileInfoTruncated) MarshalToSizedBuffer(dAtA []byte) (int, error)
func (FileInfoTruncated) ModTime ¶ added in v0.14.4
func (f FileInfoTruncated) ModTime() time.Time
func (FileInfoTruncated) MustRescan ¶ added in v0.14.49
func (f FileInfoTruncated) MustRescan() bool
func (*FileInfoTruncated) ProtoMessage ¶ added in v0.14.0
func (*FileInfoTruncated) ProtoMessage()
func (*FileInfoTruncated) ProtoSize ¶ added in v0.14.0
func (m *FileInfoTruncated) ProtoSize() (n int)
func (*FileInfoTruncated) Reset ¶ added in v0.14.0
func (m *FileInfoTruncated) Reset()
func (FileInfoTruncated) SequenceNo ¶ added in v0.14.43
func (f FileInfoTruncated) SequenceNo() int64
func (FileInfoTruncated) ShouldConflict ¶ added in v0.14.51
func (f FileInfoTruncated) ShouldConflict() bool
func (FileInfoTruncated) String ¶ added in v0.14.0
func (f FileInfoTruncated) String() string
func (*FileInfoTruncated) Unmarshal ¶ added in v0.14.0
func (m *FileInfoTruncated) Unmarshal(dAtA []byte) error
func (*FileInfoTruncated) XXX_DiscardUnknown ¶ added in v1.0.1
func (m *FileInfoTruncated) XXX_DiscardUnknown()
func (*FileInfoTruncated) XXX_Marshal ¶ added in v1.0.1
func (m *FileInfoTruncated) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
func (*FileInfoTruncated) XXX_Merge ¶ added in v1.0.1
func (m *FileInfoTruncated) XXX_Merge(src proto.Message)
func (*FileInfoTruncated) XXX_Size ¶ added in v1.0.1
func (m *FileInfoTruncated) XXX_Size() int
func (*FileInfoTruncated) XXX_Unmarshal ¶ added in v1.0.1
func (m *FileInfoTruncated) XXX_Unmarshal(b []byte) error
type FileIntf ¶
type FileIntf interface { FileSize() int64 FileName() string FileLocalFlags() uint32 IsDeleted() bool IsInvalid() bool IsIgnored() bool IsUnsupported() bool MustRescan() bool IsReceiveOnlyChanged() bool IsDirectory() bool IsSymlink() bool ShouldConflict() bool HasPermissionBits() bool SequenceNo() int64 BlockSize() int FileVersion() protocol.Vector FileType() protocol.FileInfoType FilePermissions() uint32 FileModifiedBy() protocol.ShortID ModTime() time.Time }
FileIntf is the set of methods implemented by both protocol.FileInfo and FileInfoTruncated.
type FileSet ¶
type FileSet struct {
// contains filtered or unexported fields
}
func NewFileSet ¶
func NewFileSet(folder string, fs fs.Filesystem, db *Lowlevel) *FileSet
func (*FileSet) ListDevices ¶ added in v0.14.4
func (*FileSet) SetIndexID ¶ added in v0.14.1
type FileVersion ¶ added in v0.14.0
type FileVersion struct { Version protocol.Vector `protobuf:"bytes,1,opt,name=version,proto3" json:"version"` Device []byte `protobuf:"bytes,2,opt,name=device,proto3" json:"device,omitempty"` Invalid bool `protobuf:"varint,3,opt,name=invalid,proto3" json:"invalid,omitempty"` }
func (*FileVersion) Descriptor ¶ added in v0.14.0
func (*FileVersion) Descriptor() ([]byte, []int)
func (*FileVersion) Marshal ¶ added in v0.14.0
func (m *FileVersion) Marshal() (dAtA []byte, err error)
func (*FileVersion) MarshalTo ¶ added in v0.14.0
func (m *FileVersion) MarshalTo(dAtA []byte) (int, error)
func (*FileVersion) MarshalToSizedBuffer ¶ added in v1.3.0
func (m *FileVersion) MarshalToSizedBuffer(dAtA []byte) (int, error)
func (*FileVersion) ProtoMessage ¶ added in v0.14.0
func (*FileVersion) ProtoMessage()
func (*FileVersion) ProtoSize ¶ added in v0.14.0
func (m *FileVersion) ProtoSize() (n int)
func (*FileVersion) Reset ¶ added in v0.14.0
func (m *FileVersion) Reset()
func (*FileVersion) String ¶ added in v0.14.0
func (m *FileVersion) String() string
func (*FileVersion) Unmarshal ¶ added in v0.14.0
func (m *FileVersion) Unmarshal(dAtA []byte) error
func (*FileVersion) XXX_DiscardUnknown ¶ added in v1.0.1
func (m *FileVersion) XXX_DiscardUnknown()
func (*FileVersion) XXX_Marshal ¶ added in v1.0.1
func (m *FileVersion) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
func (*FileVersion) XXX_Merge ¶ added in v1.0.1
func (m *FileVersion) XXX_Merge(src proto.Message)
func (*FileVersion) XXX_Size ¶ added in v1.0.1
func (m *FileVersion) XXX_Size() int
func (*FileVersion) XXX_Unmarshal ¶ added in v1.0.1
func (m *FileVersion) XXX_Unmarshal(b []byte) error
type Iterator ¶
The Iterator is called with either a protocol.FileInfo or a FileInfoTruncated (depending on the method) and returns true to continue iteration, false to stop.
type Lowlevel ¶ added in v0.14.52
Lowlevel is the lowest level database interface. It has a very simple purpose: hold the actual backend database, and the in-memory state that belong to that database. In the same way that a single on disk database can only be opened once, there should be only one Lowlevel for any given backend.
func NewLowlevel ¶ added in v0.14.52
func (*Lowlevel) ListFolders ¶ added in v0.14.52
ListFolders returns the list of folders currently in the database
type NamespacedKV ¶
type NamespacedKV struct {
// contains filtered or unexported fields
}
NamespacedKV is a simple key-value store using a specific namespace within a leveldb.
func NewDeviceStatisticsNamespace ¶ added in v0.14.52
func NewDeviceStatisticsNamespace(db *Lowlevel, device string) *NamespacedKV
NewDeviceStatisticsNamespace creates a KV namespace for device statistics for the given device.
func NewFolderStatisticsNamespace ¶ added in v0.14.52
func NewFolderStatisticsNamespace(db *Lowlevel, folder string) *NamespacedKV
NewFolderStatisticsNamespace creates a KV namespace for folder statistics for the given folder.
func NewMiscDataNamespace ¶ added in v0.14.52
func NewMiscDataNamespace(db *Lowlevel) *NamespacedKV
NewMiscDateNamespace creates a KV namespace for miscellaneous metadata.
func NewNamespacedKV ¶
func NewNamespacedKV(db *Lowlevel, prefix string) *NamespacedKV
NewNamespacedKV returns a new NamespacedKV that lives in the namespace specified by the prefix.
func (NamespacedKV) Bool ¶
func (n NamespacedKV) Bool(key string) (bool, bool, error)
Bool returns the stored value as a boolean and a boolean that is false if no value was stored at the key.
func (NamespacedKV) Bytes ¶
func (n NamespacedKV) Bytes(key string) ([]byte, bool, error)
Bytes returns the stored value as a raw byte slice and a boolean that is false if no value was stored at the key.
func (NamespacedKV) Delete ¶
func (n NamespacedKV) Delete(key string) error
Delete deletes the specified key. It is allowed to delete a nonexistent key.
func (*NamespacedKV) Int64 ¶
func (n *NamespacedKV) Int64(key string) (int64, bool, error)
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) PutBool ¶
func (n *NamespacedKV) PutBool(key string, val bool) error
PutBool stores a new boolean. Any existing value (even if of another type) is overwritten.
func (*NamespacedKV) PutBytes ¶
func (n *NamespacedKV) PutBytes(key string, val []byte) error
PutBytes stores a new byte slice. Any existing value (even if of another type) is overwritten.
func (*NamespacedKV) PutInt64 ¶
func (n *NamespacedKV) PutInt64(key string, val int64) error
PutInt64 stores a new int64. Any existing value (even if of another type) is overwritten.
func (*NamespacedKV) PutString ¶
func (n *NamespacedKV) PutString(key, val string) error
PutString stores a new string. Any existing value (even if of another type) is overwritten.
func (*NamespacedKV) PutTime ¶
func (n *NamespacedKV) PutTime(key string, val time.Time) error
PutTime stores a new time.Time. Any existing value (even if of another type) is overwritten.
type Snapshot ¶ added in v1.4.0
type Snapshot struct {
// contains filtered or unexported fields
}
func (*Snapshot) Availability ¶ added in v1.4.0
func (*Snapshot) GetGlobalTruncated ¶ added in v1.4.0
func (s *Snapshot) GetGlobalTruncated(file string) (FileInfoTruncated, bool)
func (*Snapshot) GlobalSize ¶ added in v1.4.0
func (*Snapshot) LocalChangedFiles ¶ added in v1.4.0
func (s *Snapshot) LocalChangedFiles(page, perpage int) []FileInfoTruncated
LocalChangedFiles returns a paginated list of currently needed files in progress, queued, and to be queued on next puller iteration, as well as the total number of files currently needed.
func (*Snapshot) ReceiveOnlyChangedSize ¶ added in v1.4.0
func (*Snapshot) RemoteNeedFolderFiles ¶ added in v1.4.0
func (s *Snapshot) RemoteNeedFolderFiles(device protocol.DeviceID, page, perpage int) []FileInfoTruncated
RemoteNeedFolderFiles returns paginated list of currently needed files in progress, queued, and to be queued on next puller iteration, as well as the total number of files currently needed.
func (*Snapshot) RemoteSequence ¶ added in v1.4.0
RemoteSequence returns the change version for the given folder, as sent by remote peers. This is guaranteed to increment if the contents of the remote or global folder has changed.
func (*Snapshot) WithGlobal ¶ added in v1.4.0
func (*Snapshot) WithGlobalTruncated ¶ added in v1.4.0
func (*Snapshot) WithHaveSequence ¶ added in v1.4.0
func (*Snapshot) WithHaveTruncated ¶ added in v1.4.0
func (*Snapshot) WithNeedTruncated ¶ added in v1.4.0
func (*Snapshot) WithPrefixedGlobalTruncated ¶ added in v1.4.0
Except for an item with a path equal to prefix, only children of prefix are iterated. E.g. for prefix "dir", "dir/file" is iterated, but "dir.file" is not.
func (*Snapshot) WithPrefixedHaveTruncated ¶ added in v1.4.0
Except for an item with a path equal to prefix, only children of prefix are iterated. E.g. for prefix "dir", "dir/file" is iterated, but "dir.file" is not.
type VersionList ¶ added in v0.13.5
type VersionList struct {
Versions []FileVersion `protobuf:"bytes,1,rep,name=versions,proto3" json:"versions"`
}
func (*VersionList) Descriptor ¶ added in v0.14.0
func (*VersionList) Descriptor() ([]byte, []int)
func (VersionList) Get ¶ added in v0.14.49
func (vl VersionList) Get(device []byte) (FileVersion, bool)
func (*VersionList) Marshal ¶ added in v0.14.0
func (m *VersionList) Marshal() (dAtA []byte, err error)
func (*VersionList) MarshalTo ¶ added in v0.14.0
func (m *VersionList) MarshalTo(dAtA []byte) (int, error)
func (*VersionList) MarshalToSizedBuffer ¶ added in v1.3.0
func (m *VersionList) MarshalToSizedBuffer(dAtA []byte) (int, error)
func (*VersionList) ProtoMessage ¶ added in v0.14.0
func (*VersionList) ProtoMessage()
func (*VersionList) ProtoSize ¶ added in v0.14.0
func (m *VersionList) ProtoSize() (n int)
func (*VersionList) Reset ¶ added in v0.14.0
func (m *VersionList) Reset()
func (VersionList) String ¶ added in v0.13.5
func (vl VersionList) String() string
func (*VersionList) Unmarshal ¶ added in v0.14.0
func (m *VersionList) Unmarshal(dAtA []byte) error
func (*VersionList) XXX_DiscardUnknown ¶ added in v1.0.1
func (m *VersionList) XXX_DiscardUnknown()
func (*VersionList) XXX_Marshal ¶ added in v1.0.1
func (m *VersionList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
func (*VersionList) XXX_Merge ¶ added in v1.0.1
func (m *VersionList) XXX_Merge(src proto.Message)
func (*VersionList) XXX_Size ¶ added in v1.0.1
func (m *VersionList) XXX_Size() int
func (*VersionList) XXX_Unmarshal ¶ added in v1.0.1
func (m *VersionList) XXX_Unmarshal(b []byte) error