sendSummary send the summary events for a single folder
(ctx context.Context, folder string)
| 358 | |
| 359 | // sendSummary send the summary events for a single folder |
| 360 | func (c *folderSummaryService) sendSummary(ctx context.Context, folder string) { |
| 361 | // The folder summary contains how many bytes, files etc |
| 362 | // are in the folder and how in sync we are. |
| 363 | data, err := c.Summary(folder) |
| 364 | if err != nil { |
| 365 | return |
| 366 | } |
| 367 | c.evLogger.Log(events.FolderSummary, FolderSummaryEventData{ |
| 368 | Folder: folder, |
| 369 | Summary: data, |
| 370 | }) |
| 371 | |
| 372 | metricFolderSummary.WithLabelValues(folder, metricScopeGlobal, metricTypeFiles).Set(float64(data.GlobalFiles)) |
| 373 | metricFolderSummary.WithLabelValues(folder, metricScopeGlobal, metricTypeDirectories).Set(float64(data.GlobalDirectories)) |
| 374 | metricFolderSummary.WithLabelValues(folder, metricScopeGlobal, metricTypeSymlinks).Set(float64(data.GlobalSymlinks)) |
| 375 | metricFolderSummary.WithLabelValues(folder, metricScopeGlobal, metricTypeDeleted).Set(float64(data.GlobalDeleted)) |
| 376 | metricFolderSummary.WithLabelValues(folder, metricScopeGlobal, metricTypeBytes).Set(float64(data.GlobalBytes)) |
| 377 | |
| 378 | metricFolderSummary.WithLabelValues(folder, metricScopeLocal, metricTypeFiles).Set(float64(data.LocalFiles)) |
| 379 | metricFolderSummary.WithLabelValues(folder, metricScopeLocal, metricTypeDirectories).Set(float64(data.LocalDirectories)) |
| 380 | metricFolderSummary.WithLabelValues(folder, metricScopeLocal, metricTypeSymlinks).Set(float64(data.LocalSymlinks)) |
| 381 | metricFolderSummary.WithLabelValues(folder, metricScopeLocal, metricTypeDeleted).Set(float64(data.LocalDeleted)) |
| 382 | metricFolderSummary.WithLabelValues(folder, metricScopeLocal, metricTypeBytes).Set(float64(data.LocalBytes)) |
| 383 | |
| 384 | metricFolderSummary.WithLabelValues(folder, metricScopeNeed, metricTypeFiles).Set(float64(data.NeedFiles)) |
| 385 | metricFolderSummary.WithLabelValues(folder, metricScopeNeed, metricTypeDirectories).Set(float64(data.NeedDirectories)) |
| 386 | metricFolderSummary.WithLabelValues(folder, metricScopeNeed, metricTypeSymlinks).Set(float64(data.NeedSymlinks)) |
| 387 | metricFolderSummary.WithLabelValues(folder, metricScopeNeed, metricTypeDeleted).Set(float64(data.NeedDeletes)) |
| 388 | metricFolderSummary.WithLabelValues(folder, metricScopeNeed, metricTypeBytes).Set(float64(data.NeedBytes)) |
| 389 | |
| 390 | for _, devCfg := range c.cfg.Folders()[folder].Devices { |
| 391 | select { |
| 392 | case <-ctx.Done(): |
| 393 | return |
| 394 | default: |
| 395 | } |
| 396 | |
| 397 | if devCfg.DeviceID.Equals(c.id) { |
| 398 | // We already know about ourselves. |
| 399 | continue |
| 400 | } |
| 401 | |
| 402 | // Get completion percentage of this folder for the |
| 403 | // remote device. |
| 404 | comp, err := c.model.Completion(devCfg.DeviceID, folder) |
| 405 | if err != nil { |
| 406 | l.Debugf("Error getting completion for folder %v, device %v: %v", folder, devCfg.DeviceID, err) |
| 407 | continue |
| 408 | } |
| 409 | ev := comp.Map() |
| 410 | ev["folder"] = folder |
| 411 | ev["device"] = devCfg.DeviceID.String() |
| 412 | c.evLogger.Log(events.FolderCompletion, ev) |
| 413 | } |
| 414 | } |