bump websocket version again
This commit is contained in:
parent
8c9a93f79d
commit
da453a303e
@ -301,6 +301,11 @@ public class WebSocket : NSObject, NSStreamDelegate {
|
|||||||
CFWriteStreamSetDispatchQueue(outStream, WebSocket.sharedWorkQueue)
|
CFWriteStreamSetDispatchQueue(outStream, WebSocket.sharedWorkQueue)
|
||||||
inStream.open()
|
inStream.open()
|
||||||
outStream.open()
|
outStream.open()
|
||||||
|
|
||||||
|
self.mutex.lock()
|
||||||
|
self.readyToWrite = true
|
||||||
|
self.mutex.unlock()
|
||||||
|
|
||||||
let bytes = UnsafePointer<UInt8>(data.bytes)
|
let bytes = UnsafePointer<UInt8>(data.bytes)
|
||||||
var timeout = 5000000 //wait 5 seconds before giving up
|
var timeout = 5000000 //wait 5 seconds before giving up
|
||||||
writeQueue.addOperationWithBlock { [unowned self] in
|
writeQueue.addOperationWithBlock { [unowned self] in
|
||||||
@ -308,16 +313,13 @@ public class WebSocket : NSObject, NSStreamDelegate {
|
|||||||
usleep(100) //wait until the socket is ready
|
usleep(100) //wait until the socket is ready
|
||||||
timeout -= 100
|
timeout -= 100
|
||||||
if timeout < 0 {
|
if timeout < 0 {
|
||||||
self.disconnectStream(self.errorWithDetail("write wait timed out", code: 2))
|
self.cleanupStream()
|
||||||
return
|
self.doDisconnect(self.errorWithDetail("write wait timed out", code: 2))
|
||||||
} else if let error = outStream.streamError {
|
|
||||||
self.disconnectStream(error)
|
|
||||||
return
|
return
|
||||||
|
} else if outStream.streamError != nil {
|
||||||
|
return //disconnectStream will be called.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
self.mutex.lock()
|
|
||||||
self.readyToWrite = true
|
|
||||||
self.mutex.unlock()
|
|
||||||
outStream.write(bytes, maxLength: data.length)
|
outStream.write(bytes, maxLength: data.length)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -350,6 +352,13 @@ public class WebSocket : NSObject, NSStreamDelegate {
|
|||||||
//disconnect the stream object
|
//disconnect the stream object
|
||||||
private func disconnectStream(error: NSError?) {
|
private func disconnectStream(error: NSError?) {
|
||||||
writeQueue.waitUntilAllOperationsAreFinished()
|
writeQueue.waitUntilAllOperationsAreFinished()
|
||||||
|
cleanupStream()
|
||||||
|
doDisconnect(error)
|
||||||
|
}
|
||||||
|
|
||||||
|
private func cleanupStream() {
|
||||||
|
outputStream?.delegate = nil
|
||||||
|
inputStream?.delegate = nil
|
||||||
if let stream = inputStream {
|
if let stream = inputStream {
|
||||||
CFReadStreamSetDispatchQueue(stream, nil)
|
CFReadStreamSetDispatchQueue(stream, nil)
|
||||||
stream.close()
|
stream.close()
|
||||||
@ -359,8 +368,7 @@ public class WebSocket : NSObject, NSStreamDelegate {
|
|||||||
stream.close()
|
stream.close()
|
||||||
}
|
}
|
||||||
outputStream = nil
|
outputStream = nil
|
||||||
certValidated = false
|
inputStream = nil
|
||||||
doDisconnect(error)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
///handles the incoming bytes and sending them to the proper processing method
|
///handles the incoming bytes and sending them to the proper processing method
|
||||||
@ -800,18 +808,7 @@ public class WebSocket : NSObject, NSStreamDelegate {
|
|||||||
mutex.lock()
|
mutex.lock()
|
||||||
readyToWrite = false
|
readyToWrite = false
|
||||||
mutex.unlock()
|
mutex.unlock()
|
||||||
outputStream?.delegate = nil
|
cleanupStream()
|
||||||
inputStream?.delegate = nil
|
|
||||||
if let stream = inputStream {
|
|
||||||
CFReadStreamSetDispatchQueue(stream, nil)
|
|
||||||
stream.close()
|
|
||||||
}
|
|
||||||
if let stream = outputStream {
|
|
||||||
CFWriteStreamSetDispatchQueue(stream, nil)
|
|
||||||
stream.close()
|
|
||||||
}
|
|
||||||
outputStream = nil
|
|
||||||
inputStream = nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user