From a0ec4467fd8f6425858fce7be40eda711af9d7ea Mon Sep 17 00:00:00 2001 From: Jakob Borg Date: Sun, 22 May 2016 07:52:08 +0000 Subject: [PATCH] cmd/syncthing: Emit new RemoteDownloadProgress event to track remote download progress Without this the summary service doesn't know to recalculate completion percentage for remote devices when DownloadProgress messages come in. That means that completion percentage isn't updated in the GUI while transfers of large files are ongoing. With this change, it updates correctly. GitHub-Pull-Request: https://github.com/syncthing/syncthing/pull/3144 --- cmd/syncthing/summaryservice.go | 2 +- lib/events/events.go | 3 +++ lib/model/model.go | 7 +++++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/cmd/syncthing/summaryservice.go b/cmd/syncthing/summaryservice.go index 9466439f..19bb2fa9 100644 --- a/cmd/syncthing/summaryservice.go +++ b/cmd/syncthing/summaryservice.go @@ -59,7 +59,7 @@ func (c *folderSummaryService) Stop() { // listenForUpdates subscribes to the event bus and makes note of folders that // need their data recalculated. func (c *folderSummaryService) listenForUpdates() { - sub := events.Default.Subscribe(events.LocalIndexUpdated | events.RemoteIndexUpdated | events.StateChanged) + sub := events.Default.Subscribe(events.LocalIndexUpdated | events.RemoteIndexUpdated | events.StateChanged | events.RemoteDownloadProgress) defer events.Default.Unsubscribe(sub) for { diff --git a/lib/events/events.go b/lib/events/events.go index 62de7f73..5d44bb43 100644 --- a/lib/events/events.go +++ b/lib/events/events.go @@ -36,6 +36,7 @@ const ( FolderRejected ConfigSaved DownloadProgress + RemoteDownloadProgress FolderSummary FolderCompletion FolderErrors @@ -80,6 +81,8 @@ func (t EventType) String() string { return "ConfigSaved" case DownloadProgress: return "DownloadProgress" + case RemoteDownloadProgress: + return "RemoteDownloadProgress" case FolderSummary: return "FolderSummary" case FolderCompletion: diff --git a/lib/model/model.go b/lib/model/model.go index 075463b4..477ecea3 100644 --- a/lib/model/model.go +++ b/lib/model/model.go @@ -1083,7 +1083,14 @@ func (m *Model) DownloadProgress(device protocol.DeviceID, folder string, update m.pmut.RLock() m.deviceDownloads[device].Update(folder, updates) + blocks := m.deviceDownloads[device].NumberOfBlocksInProgress() m.pmut.RUnlock() + + events.Default.Log(events.RemoteDownloadProgress, map[string]interface{}{ + "device": device.String(), + "folder": folder, + "blocks": blocks, + }) } func (m *Model) ResumeDevice(device protocol.DeviceID) {