final class JSONReciever {
- init(queue: Queue) {
+ init(queue: Queue<APIResponse>) {
self.queue = queue
CustomHTTPProtocol.classDelegate = self
}
- fileprivate let queue: Queue
+ fileprivate let queue: Queue<APIResponse>
fileprivate var recievers: [URLProtocol: NSMutableData] = [:]
}
final class JSONTracker {
- private let queue: Queue
+ private let queue: Queue<APIResponse>
private let reciever: JSONReciever
init() {
private func doAction() {
- guard let item = queue.dequeue() as? APIResponse
- else { return print("Dequeued item is not APIResponse") }
-
do {
- try CommandRegister.command(for: item).execute()
+ try CommandRegister.command(for: queue.dequeue()).execute()
} catch {
import Cocoa
-final class Queue {
+final class Queue<T> {
- private var contents: [Any] = []
+ private var contents: [T] = []
private let lock = NSCondition()
- func dequeue() -> Any {
+ func dequeue() -> T {
lock.lock()
defer { lock.unlock() }
return contents.popLast()!
}
- func enqueue(_ obj: Any) {
+ func enqueue(_ obj: T) {
lock.lock()
defer { lock.unlock() }