change status names, execute engine connect on emitQueue

This commit is contained in:
Erik 2016-04-27 14:38:11 -04:00
parent 44ee94d2ac
commit 8e1434e63b
4 changed files with 19 additions and 25 deletions

View File

@ -198,7 +198,9 @@ public final class SocketEngine : NSObject, SocketEnginePollable, SocketEngineWe
} }
} }
doLongPoll(reqPolling) dispatch_async(emitQueue) {
self.doLongPoll(reqPolling)
}
} }
private func createURLs() -> (NSURL, NSURL) { private func createURLs() -> (NSURL, NSURL) {
@ -280,7 +282,8 @@ public final class SocketEngine : NSObject, SocketEnginePollable, SocketEngineWe
DefaultSocketLogger.Logger.log("Engine is being closed.", type: logType) DefaultSocketLogger.Logger.log("Engine is being closed.", type: logType)
if closed { if closed {
return postSendClose(nil, nil, nil) client?.engineDidClose(reason)
return
} }
if websocket { if websocket {

View File

@ -105,6 +105,7 @@ extension SocketEnginePollable {
return return
} }
DefaultSocketLogger.Logger.log("Doing polling request", type: "SocketEnginePolling") DefaultSocketLogger.Logger.log("Doing polling request", type: "SocketEnginePolling")
session?.dataTaskWithRequest(req, completionHandler: callback).resume() session?.dataTaskWithRequest(req, completionHandler: callback).resume()

View File

@ -131,8 +131,7 @@ public final class SocketIOClient : NSObject, SocketEngineClient, SocketParsable
assert(timeoutAfter >= 0, "Invalid timeout: \(timeoutAfter)") assert(timeoutAfter >= 0, "Invalid timeout: \(timeoutAfter)")
guard status != .Connected else { guard status != .Connected else {
DefaultSocketLogger.Logger.log("Tried connecting on an already connected socket", DefaultSocketLogger.Logger.log("Tried connecting on an already connected socket", type: logType)
type: logType)
return return
} }
@ -149,8 +148,8 @@ public final class SocketIOClient : NSObject, SocketEngineClient, SocketParsable
let time = dispatch_time(DISPATCH_TIME_NOW, Int64(timeoutAfter) * Int64(NSEC_PER_SEC)) let time = dispatch_time(DISPATCH_TIME_NOW, Int64(timeoutAfter) * Int64(NSEC_PER_SEC))
dispatch_after(time, handleQueue) {[weak self] in dispatch_after(time, handleQueue) {[weak self] in
if let this = self where this.status != .Connected && this.status != .Closed { if let this = self where this.status != .Connected && this.status != .Disconnected {
this.status = .Closed this.status = .Disconnected
this.engine?.disconnect("Connect timeout") this.engine?.disconnect("Connect timeout")
handler?() handler?()
@ -187,11 +186,11 @@ public final class SocketIOClient : NSObject, SocketEngineClient, SocketParsable
} }
func didDisconnect(reason: String) { func didDisconnect(reason: String) {
guard status != .Closed else { return } guard status != .Disconnected else { return }
DefaultSocketLogger.Logger.log("Disconnected: %@", type: logType, args: reason) DefaultSocketLogger.Logger.log("Disconnected: %@", type: logType, args: reason)
status = .Closed status = .Disconnected
reconnects = false reconnects = false
// Make sure the engine is actually dead. // Make sure the engine is actually dead.
@ -202,6 +201,8 @@ public final class SocketIOClient : NSObject, SocketEngineClient, SocketParsable
/// Disconnects the socket. Only reconnect the same socket if you know what you're doing. /// Disconnects the socket. Only reconnect the same socket if you know what you're doing.
/// Will turn off automatic reconnects. /// Will turn off automatic reconnects.
public func disconnect() { public func disconnect() {
assert(status != .NotConnected, "Tried closing a NotConnected client")
DefaultSocketLogger.Logger.log("Closing socket", type: logType) DefaultSocketLogger.Logger.log("Closing socket", type: logType)
reconnects = false reconnects = false
@ -267,11 +268,11 @@ public final class SocketIOClient : NSObject, SocketEngineClient, SocketParsable
public func engineDidClose(reason: String) { public func engineDidClose(reason: String) {
waitingPackets.removeAll() waitingPackets.removeAll()
if status != .Closed { if status != .Disconnected {
status = .NotConnected status = .NotConnected
} }
if status == .Closed || !reconnects { if status == .Disconnected || !reconnects {
didDisconnect(reason) didDisconnect(reason)
} else if !reconnecting { } else if !reconnecting {
reconnecting = true reconnecting = true

View File

@ -24,19 +24,8 @@
import Foundation import Foundation
@objc public enum SocketIOClientStatus : Int, CustomStringConvertible { @objc public enum SocketIOClientStatus : Int {
case NotConnected, Closed, Connecting, Connected // NotConnected: initial state
// Disconnected: connected before
public var description: String { case NotConnected, Disconnected, Connecting, Connected
switch self {
case NotConnected:
return "Not Connected"
case Closed:
return "Closed"
case Connecting:
return "Connecting"
case Connected:
return "Connected"
}
}
} }