added iOS source code
[wl-app.git] / iOS / Pods / MatomoTracker / MatomoTracker / MemoryQueue.swift
1 import Foundation
2
3 /// The MemoryQueue is a **not thread safe** in memory Queue.
4 public final class MemoryQueue: NSObject, Queue {
5     private var items = [Event]()
6     
7     public var eventCount: Int {
8         return items.count
9     }
10     
11     public func enqueue(events: [Event], completion: (()->())?) {
12         assertMainThread()
13         items.append(contentsOf: events)
14         completion?()
15     }
16     
17     public func first(limit: Int, completion: (_ items: [Event])->()) {
18         assertMainThread()
19         let amount = [limit,eventCount].min()!
20         let dequeuedItems = Array(items[0..<amount])
21         completion(dequeuedItems)
22     }
23     
24     public func remove(events: [Event], completion: ()->()) {
25         assertMainThread()
26         items = items.filter({ event in !events.contains(where: { eventToRemove in eventToRemove.uuid == event.uuid })})
27         completion()
28     }
29 }