DoseProgressReporter.swift 921 B

12345678910111213141516171819202122232425262728293031323334353637
  1. //
  2. // DoseProgressReporter.swift
  3. // LoopKit
  4. //
  5. // Created by Pete Schwamb on 3/12/19.
  6. // Copyright © 2019 LoopKit Authors. All rights reserved.
  7. //
  8. import Foundation
  9. public struct DoseProgress {
  10. public let deliveredUnits: Double
  11. public let percentComplete: Double
  12. public var isComplete: Bool {
  13. return percentComplete >= 1.0 || fabs(percentComplete - 1.0) <= Double.ulpOfOne
  14. }
  15. public init(deliveredUnits: Double, percentComplete: Double) {
  16. self.deliveredUnits = deliveredUnits
  17. self.percentComplete = percentComplete
  18. }
  19. }
  20. public protocol DoseProgressObserver: AnyObject {
  21. func doseProgressReporterDidUpdate(_ doseProgressReporter: DoseProgressReporter)
  22. }
  23. public protocol DoseProgressReporter: AnyObject {
  24. var progress: DoseProgress { get }
  25. func addObserver(_ observer: DoseProgressObserver)
  26. func removeObserver(_ observer: DoseProgressObserver)
  27. }