MCPcopy
hub / github.com/syncthing/syncthing / folderCompletion

Method folderCompletion

lib/model/model.go:914–949  ·  view source on GitHub ↗
(device protocol.DeviceID, folder string)

Source from the content-addressed store, hash-verified

912}
913
914func (m *model) folderCompletion(device protocol.DeviceID, folder string) (FolderCompletion, error) {
915 m.mut.RLock()
916 err := m.checkFolderRunningRLocked(folder)
917 m.mut.RUnlock()
918 if err != nil {
919 return FolderCompletion{}, err
920 }
921
922 m.mut.RLock()
923 state := m.remoteFolderStates[device][folder]
924 downloaded := m.deviceDownloads[device].BytesDownloaded(folder)
925 m.mut.RUnlock()
926
927 need, err := m.sdb.CountNeed(folder, device)
928 if err != nil {
929 return FolderCompletion{}, err
930 }
931 need.Bytes -= downloaded
932 // This might be more than it really is, because some blocks can be of a smaller size.
933 if need.Bytes < 0 {
934 need.Bytes = 0
935 }
936
937 seq, err := m.sdb.GetDeviceSequence(folder, device)
938 if err != nil {
939 return FolderCompletion{}, err
940 }
941 glob, err := m.sdb.CountGlobal(folder)
942 if err != nil {
943 return FolderCompletion{}, err
944 }
945 comp := newFolderCompletion(glob, need, seq, state)
946
947 l.Debugf("%v Completion(%s, %q): %v", m, device, folder, comp.Map())
948 return comp, nil
949}
950
951func (m *model) LocalFiles(folder string, device protocol.DeviceID) (iter.Seq[protocol.FileInfo], func() error) {
952 return m.sdb.AllLocalFiles(folder, device)

Callers 1

CompletionMethod · 0.95

Calls 8

newFolderCompletionFunction · 0.85
DebugfMethod · 0.80
MapMethod · 0.80
CountNeedMethod · 0.65
GetDeviceSequenceMethod · 0.65
CountGlobalMethod · 0.65
BytesDownloadedMethod · 0.45

Tested by

no test coverage detected