CommandQueue.swift 702 B

1234567891011121314151617181920212223242526272829303132333435
  1. //
  2. // CommandQueue.swift
  3. // CGMBLEKit Example
  4. //
  5. // Created by Paul Dickens on 25/03/2018.
  6. // Copyright © 2018 LoopKit Authors. All rights reserved.
  7. //
  8. import Foundation
  9. import CGMBLEKit
  10. class CommandQueue {
  11. private var list = Array<Command>()
  12. private var lock = os_unfair_lock()
  13. func enqueue(_ element: Command) {
  14. os_unfair_lock_lock(&lock)
  15. list.append(element)
  16. os_unfair_lock_unlock(&lock)
  17. }
  18. func dequeue() -> Command? {
  19. os_unfair_lock_lock(&lock)
  20. defer {
  21. os_unfair_lock_unlock(&lock)
  22. }
  23. if !list.isEmpty {
  24. return list.removeFirst()
  25. } else {
  26. return nil
  27. }
  28. }
  29. }