OSDN Git Service

Queueをジェネリクスにした
authormasakih <masakih@users.sourceforge.jp>
Sat, 5 Aug 2017 04:23:54 +0000 (13:23 +0900)
committermasakih <masakih@users.sourceforge.jp>
Sat, 5 Aug 2017 04:23:54 +0000 (13:23 +0900)
KCD/JSONReciever.swift
KCD/JSONTracker.swift
KCD/Queue.swift

index 46b0a48..08f03f4 100644 (file)
@@ -10,13 +10,13 @@ import Cocoa
 
 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] = [:]
 }
 
index bb2756b..f3f795f 100644 (file)
@@ -10,7 +10,7 @@ import Cocoa
 
 final class JSONTracker {
     
-    private let queue: Queue
+    private let queue: Queue<APIResponse>
     private let reciever: JSONReciever
     
     init() {
@@ -28,12 +28,9 @@ final class JSONTracker {
     
     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 {
             
index 29b7488..3b4f6a4 100644 (file)
@@ -8,12 +8,12 @@
 
 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() }
@@ -26,7 +26,7 @@ final class Queue {
         return contents.popLast()!
     }
     
-    func enqueue(_ obj: Any) {
+    func enqueue(_ obj: T) {
         
         lock.lock()
         defer { lock.unlock() }