change status names, execute engine connect on emitQueue
This commit is contained in:
parent
44ee94d2ac
commit
8e1434e63b
@ -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 {
|
||||||
|
|||||||
@ -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()
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user