@@ -27,22 +27,22 @@ import Foundation
2727public class SocketIOClient : NSObject , SocketEngineClient {
2828 let reconnectAttempts : Int !
2929 private lazy var params = [ String: AnyObject] ( )
30- private var ackHandlers = [ SocketAckHandler] ( )
30+ private var ackHandlers = ContiguousArray < SocketAckHandler > ( )
3131 private var anyHandler : ( ( AnyHandler ) -> Void ) ?
3232 private var _closed = false
3333 private var _connected = false
3434 private var _connecting = false
3535 private var currentReconnectAttempt = 0
3636 private var forcePolling = false
37- private var handlers = [ SocketEventHandler] ( )
37+ private var handlers = ContiguousArray < SocketEventHandler > ( )
3838 private var paramConnect = false
3939 private var _secure = false
4040 private var _sid : String ?
4141 private var _reconnecting = false
4242 private var reconnectTimer : NSTimer ?
4343
44- internal var currentAck = - 1
45- internal var waitingData = [ SocketPacket] ( )
44+ var currentAck = - 1
45+ var waitingData = ContiguousArray < SocketPacket > ( )
4646
4747 public let socketURL : String
4848 public let ackQueue = dispatch_queue_create ( " ackQueue " . cStringUsingEncoding ( NSUTF8StringEncoding) ,
@@ -62,7 +62,7 @@ public class SocketIOClient: NSObject, SocketEngineClient {
6262 }
6363 public var cookies : [ NSHTTPCookie ] ?
6464 public var engine : SocketEngine ?
65- public var nsp : String ?
65+ public var nsp = " / "
6666 public var reconnects = true
6767 public var reconnecting : Bool {
6868 return self . _reconnecting
@@ -244,69 +244,40 @@ public class SocketIOClient: NSObject, SocketEngineClient {
244244 }
245245
246246 private func _emit( event: String , _ args: [ AnyObject ] , ack: Int ? = nil ) {
247- var frame : SocketPacket
248- var str : String
249-
250- let ( items, hasBinary, emitDatas) = SocketParser . parseEmitArgs ( args)
251-
252247 if !self . connected {
253248 return
254249 }
255250
256- if hasBinary {
257- if ack == nil {
258- str = SocketPacket . createMessageForEvent ( event, withArgs: items,
259- hasBinary: true , withDatas: emitDatas. count, toNamespace: self . nsp)
260- } else {
261- str = SocketPacket . createMessageForEvent ( event, withArgs: items,
262- hasBinary: true , withDatas: emitDatas. count, toNamespace: self . nsp, wantsAck: ack)
263- }
264-
265- self . engine? . send ( str, withData: emitDatas)
251+ let packet = SocketPacket ( type: nil , data: args, nsp: self . nsp, id: ack)
252+ var str : String
253+
254+ SocketParser . parseForEmit ( packet)
255+ str = packet. createMessageForEvent ( event)
256+
257+ if packet. type == SocketPacketType . BINARY_EVENT {
258+ self . engine? . send ( str, withData: packet. binary)
266259 } else {
267- if ack == nil {
268- str = SocketPacket . createMessageForEvent ( event, withArgs: items, hasBinary: false ,
269- withDatas: 0 , toNamespace: self . nsp)
270- } else {
271- str = SocketPacket . createMessageForEvent ( event, withArgs: items, hasBinary: false ,
272- withDatas: 0 , toNamespace: self . nsp, wantsAck: ack)
273- }
274-
275260 self . engine? . send ( str, withData: nil )
276261 }
277262 }
278263
279264 // If the server wants to know that the client received data
280- func emitAck( ack: Int , withData data : [ AnyObject ] ? , withAckType ackType : Int ) {
265+ func emitAck( ack: Int , withData args : [ AnyObject ] ? ) {
281266 dispatch_async ( self . ackQueue) { [ weak self] in
282- if self == nil || !self !. connected || data == nil {
267+ if self == nil || !self !. connected || args == nil {
283268 return
284269 }
285270
286- // println("sending ack: \(ack) \(data)")
287- let ( items, hasBinary, emitDatas) = SocketParser . parseEmitArgs ( data!)
271+ let packet = SocketPacket ( type: nil , data: args, nsp: self !. nsp, id: ack)
288272 var str : String
289273
290- if !hasBinary {
291- if self ? . nsp == nil {
292- str = SocketPacket . createAck ( ack, withArgs: items,
293- withAckType: 3 , withNsp: " / " )
294- } else {
295- str = SocketPacket . createAck ( ack, withArgs: items,
296- withAckType: 3 , withNsp: self !. nsp!)
297- }
298-
299- self ? . engine? . send ( str, withData: nil )
274+ SocketParser . parseForEmit ( packet)
275+ str = packet. createAck ( )
276+
277+ if packet. type == SocketPacketType . BINARY_ACK {
278+ self ? . engine? . send ( str, withData: packet. binary)
300279 } else {
301- if self ? . nsp == nil {
302- str = SocketPacket . createAck ( ack, withArgs: items,
303- withAckType: 6 , withNsp: " / " , withBinary: emitDatas. count)
304- } else {
305- str = SocketPacket . createAck ( ack, withArgs: items,
306- withAckType: 6 , withNsp: self !. nsp!, withBinary: emitDatas. count)
307- }
308-
309- self ? . engine? . send ( str, withData: emitDatas)
280+ self ? . engine? . send ( str, withData: nil )
310281 }
311282 }
312283 }
@@ -361,8 +332,8 @@ public class SocketIOClient: NSObject, SocketEngineClient {
361332
362333 // Should be removed and moved to SocketEngine
363334 func joinNamespace( ) {
364- if self . nsp != nil {
365- self . engine? . send ( " 0/ \( self . nsp! ) " , withData: nil )
335+ if self . nsp != " / " {
336+ self . engine? . send ( " 0/ \( self . nsp) " , withData: nil )
366337 }
367338 }
368339
0 commit comments