use socketioclientoptions for engine

This commit is contained in:
Erik 2015-10-21 15:07:00 -04:00
parent 0dd3def2e4
commit 9abf2e77e0
4 changed files with 30 additions and 14 deletions

View File

@ -15,7 +15,7 @@ class SocketEngineTest: XCTestCase {
override func setUp() { override func setUp() {
super.setUp() super.setUp()
client = SocketIOClient(socketURL: "") client = SocketIOClient(socketURL: "")
engine = SocketEngine(client: client, opts: nil) engine = SocketEngine(client: client, options: nil)
client.setTestable() client.setTestable()
} }

View File

@ -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 handleQueue = dispatch_queue_create("com.socketio.engineHandleQueue", DISPATCH_QUEUE_SERIAL)
private let logType = "SocketEngine" private let logType = "SocketEngine"
private let parseQueue = dispatch_queue_create("com.socketio.engineParseQueue", DISPATCH_QUEUE_SERIAL) private let parseQueue = dispatch_queue_create("com.socketio.engineParseQueue", DISPATCH_QUEUE_SERIAL)
private let session: NSURLSession!
private let workQueue = NSOperationQueue() private let workQueue = NSOperationQueue()
private var closed = false private var closed = false
@ -63,6 +62,7 @@ public final class SocketEngine: NSObject, SocketEngineSpec, WebSocketDelegate {
private var postWait = [String]() private var postWait = [String]()
private var probing = false private var probing = false
private var probeWait = ProbeWaitQueue() private var probeWait = ProbeWaitQueue()
private var session: NSURLSession!
private var waitingForPoll = false private var waitingForPoll = false
private var waitingForPost = false private var waitingForPost = false
private var websocketConnected = false private var websocketConnected = false
@ -71,16 +71,33 @@ public final class SocketEngine: NSObject, SocketEngineSpec, WebSocketDelegate {
private(set) var polling = true private(set) var polling = true
private(set) var websocket = false private(set) var websocket = false
public init(client: SocketEngineClient, opts: NSDictionary?) { init(client: SocketEngineClient, options: Set<SocketIOClientOption>) {
self.client = client self.client = client
session = NSURLSession(configuration: .defaultSessionConfiguration(), for option in options {
delegate: opts?["sessionDelegate"] as? NSURLSessionDelegate, switch option {
delegateQueue: workQueue) case .SessionDelegate(let delegate):
forceWebsockets = opts?["forceWebsockets"] as? Bool ?? false session = NSURLSession(configuration: .defaultSessionConfiguration(),
forcePolling = opts?["forcePolling"] as? Bool ?? false delegate: delegate,
cookies = opts?["cookies"] as? [NSHTTPCookie] delegateQueue: workQueue)
socketPath = opts?["path"] as? String ?? "" case .ForcePolling(let force):
extraHeaders = opts?["extraHeaders"] as? [String: String] 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 { deinit {

View File

@ -33,7 +33,7 @@ import Foundation
var urlPolling: String {get} var urlPolling: String {get}
var urlWebSocket: String {get} var urlWebSocket: String {get}
init(client: SocketEngineClient, opts: NSDictionary?) init(client: SocketEngineClient, options: NSDictionary?)
func close() func close()
func open(opts: [String: AnyObject]?) func open(opts: [String: AnyObject]?)

View File

@ -111,8 +111,7 @@ public final class SocketIOClient: NSObject, SocketEngineClient {
private func addEngine() -> SocketEngine { private func addEngine() -> SocketEngine {
Logger.log("Adding engine", type: logType) Logger.log("Adding engine", type: logType)
let newEngine = SocketEngine(client: self, opts: let newEngine = SocketEngine(client: self, options: options ?? [])
SocketIOClientOption.SocketOptionsSetToNSDictionary(options ?? []))
engine = newEngine engine = newEngine
return newEngine return newEngine