diff --git a/SocketIO-MacTests/SocketEngineTest.swift b/SocketIO-MacTests/SocketEngineTest.swift index 9a2a1d9..a29b1a0 100644 --- a/SocketIO-MacTests/SocketEngineTest.swift +++ b/SocketIO-MacTests/SocketEngineTest.swift @@ -15,7 +15,7 @@ class SocketEngineTest: XCTestCase { override func setUp() { super.setUp() client = SocketIOClient(socketURL: "") - engine = SocketEngine(client: client, opts: nil) + engine = SocketEngine(client: client, options: nil) client.setTestable() } diff --git a/SocketIOClientSwift/SocketEngine.swift b/SocketIOClientSwift/SocketEngine.swift index 4109adb..ce2d10d 100644 --- a/SocketIOClientSwift/SocketEngine.swift +++ b/SocketIOClientSwift/SocketEngine.swift @@ -42,7 +42,6 @@ public final class SocketEngine: NSObject, SocketEngineSpec, WebSocketDelegate { private let handleQueue = dispatch_queue_create("com.socketio.engineHandleQueue", DISPATCH_QUEUE_SERIAL) private let logType = "SocketEngine" private let parseQueue = dispatch_queue_create("com.socketio.engineParseQueue", DISPATCH_QUEUE_SERIAL) - private let session: NSURLSession! private let workQueue = NSOperationQueue() private var closed = false @@ -63,6 +62,7 @@ public final class SocketEngine: NSObject, SocketEngineSpec, WebSocketDelegate { private var postWait = [String]() private var probing = false private var probeWait = ProbeWaitQueue() + private var session: NSURLSession! private var waitingForPoll = false private var waitingForPost = false private var websocketConnected = false @@ -71,16 +71,33 @@ public final class SocketEngine: NSObject, SocketEngineSpec, WebSocketDelegate { private(set) var polling = true private(set) var websocket = false - public init(client: SocketEngineClient, opts: NSDictionary?) { + init(client: SocketEngineClient, options: Set) { self.client = client - session = NSURLSession(configuration: .defaultSessionConfiguration(), - delegate: opts?["sessionDelegate"] as? NSURLSessionDelegate, - delegateQueue: workQueue) - forceWebsockets = opts?["forceWebsockets"] as? Bool ?? false - forcePolling = opts?["forcePolling"] as? Bool ?? false - cookies = opts?["cookies"] as? [NSHTTPCookie] - socketPath = opts?["path"] as? String ?? "" - extraHeaders = opts?["extraHeaders"] as? [String: String] + for option in options { + switch option { + case .SessionDelegate(let delegate): + session = NSURLSession(configuration: .defaultSessionConfiguration(), + delegate: delegate, + delegateQueue: workQueue) + case .ForcePolling(let force): + forcePolling = force + case .ForceWebsockets(let force): + forceWebsockets = force + case .Cookies(let cookies): + self.cookies = cookies + case .Path(let path): + socketPath = path + case .ExtraHeaders(let headers): + extraHeaders = headers + default: + continue + } + } + } + + public convenience init(client: SocketEngineClient, options: NSDictionary?) { + self.init(client: client, + options: SocketIOClientOption.NSDictionaryToSocketOptionsSet(options ?? [:])) } deinit { diff --git a/SocketIOClientSwift/SocketEngineSpec.swift b/SocketIOClientSwift/SocketEngineSpec.swift index 63b59f3..92ed236 100644 --- a/SocketIOClientSwift/SocketEngineSpec.swift +++ b/SocketIOClientSwift/SocketEngineSpec.swift @@ -33,7 +33,7 @@ import Foundation var urlPolling: String {get} var urlWebSocket: String {get} - init(client: SocketEngineClient, opts: NSDictionary?) + init(client: SocketEngineClient, options: NSDictionary?) func close() func open(opts: [String: AnyObject]?) diff --git a/SocketIOClientSwift/SocketIOClient.swift b/SocketIOClientSwift/SocketIOClient.swift index 8f69e2c..c9a7db0 100644 --- a/SocketIOClientSwift/SocketIOClient.swift +++ b/SocketIOClientSwift/SocketIOClient.swift @@ -111,8 +111,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient { private func addEngine() -> SocketEngine { Logger.log("Adding engine", type: logType) - let newEngine = SocketEngine(client: self, opts: - SocketIOClientOption.SocketOptionsSetToNSDictionary(options ?? [])) + let newEngine = SocketEngine(client: self, options: options ?? []) engine = newEngine return newEngine