Skip to content

Commit d94a190

Browse files
committed
refactor. Remove var from methods and pattern matching
1 parent fff2f29 commit d94a190

File tree

3 files changed

+62
-77
lines changed

3 files changed

+62
-77
lines changed

Source/SocketEngine.swift

Lines changed: 33 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -147,13 +147,12 @@ public final class SocketEngine: NSObject, SocketEngineSpec, WebSocketDelegate {
147147
}
148148
}
149149

150-
private func checkIfMessageIsBase64Binary(var message: String) -> Bool {
150+
private func checkIfMessageIsBase64Binary(message: String) -> Bool {
151151
if message.hasPrefix("b4") {
152152
// binary in base64 string
153-
message.removeRange(Range(start: message.startIndex,
154-
end: message.startIndex.advancedBy(2)))
153+
let noPrefix = message[message.startIndex.advancedBy(2)..<message.endIndex]
155154

156-
if let data = NSData(base64EncodedString: message,
155+
if let data = NSData(base64EncodedString: noPrefix,
157156
options: .IgnoreUnknownCharacters) {
158157
client?.parseBinaryData(data)
159158
}
@@ -282,17 +281,15 @@ public final class SocketEngine: NSObject, SocketEngineSpec, WebSocketDelegate {
282281
private func flushProbeWait() {
283282
DefaultSocketLogger.Logger.log("Flushing probe wait", type: logType)
284283

285-
dispatch_async(emitQueue) {[weak self] in
286-
if let this = self {
287-
for waiter in this.probeWait {
288-
this.write(waiter.msg, withType: waiter.type, withData: waiter.data)
289-
}
290-
291-
this.probeWait.removeAll(keepCapacity: false)
292-
293-
if this.postWait.count != 0 {
294-
this.flushWaitingForPostToWebSocket()
295-
}
284+
dispatch_async(emitQueue) {
285+
for waiter in self.probeWait {
286+
self.write(waiter.msg, withType: waiter.type, withData: waiter.data)
287+
}
288+
289+
self.probeWait.removeAll(keepCapacity: false)
290+
291+
if self.postWait.count != 0 {
292+
self.flushWaitingForPostToWebSocket()
296293
}
297294
}
298295
}
@@ -420,10 +417,11 @@ public final class SocketEngine: NSObject, SocketEngineSpec, WebSocketDelegate {
420417
client?.parseBinaryData(data.subdataWithRange(NSMakeRange(1, data.length - 1)))
421418
}
422419

423-
private func parseEngineMessage(var message: String, fromPolling: Bool) {
420+
private func parseEngineMessage(message: String, fromPolling: Bool) {
424421
DefaultSocketLogger.Logger.log("Got message: %@", type: logType, args: message)
425422

426423
let reader = SocketStringReader(message: message)
424+
let fixedString: String
427425

428426
guard let type = SocketEnginePacketType(rawValue: Int(reader.currentCharacter) ?? -1) else {
429427
if !checkIfMessageIsBase64Binary(message) {
@@ -434,22 +432,22 @@ public final class SocketEngine: NSObject, SocketEngineSpec, WebSocketDelegate {
434432
}
435433

436434
if fromPolling && type != .Noop {
437-
fixDoubleUTF8(&message)
435+
fixedString = fixDoubleUTF8(message)
436+
} else {
437+
fixedString = message
438438
}
439439

440440
switch type {
441441
case .Message:
442-
message.removeAtIndex(message.startIndex)
443-
handleMessage(message)
442+
handleMessage(fixedString[fixedString.startIndex.successor()..<fixedString.endIndex])
444443
case .Noop:
445444
handleNOOP()
446445
case .Pong:
447-
handlePong(message)
446+
handlePong(fixedString)
448447
case .Open:
449-
message.removeAtIndex(message.startIndex)
450-
handleOpen(message)
448+
handleOpen(fixedString[fixedString.startIndex.successor()..<fixedString.endIndex])
451449
case .Close:
452-
handleClose(message)
450+
handleClose(fixedString)
453451
default:
454452
DefaultSocketLogger.Logger.log("Got unknown packet type", type: logType)
455453
}
@@ -567,7 +565,6 @@ extension SocketEngine {
567565
let req = NSMutableURLRequest(URL: NSURL(string: urlPolling + "&sid=\(sid)&b64=1")!)
568566

569567
addHeaders(req)
570-
571568
doLongPoll(req)
572569
}
573570

@@ -600,9 +597,9 @@ extension SocketEngine {
600597

601598
DefaultSocketLogger.Logger.log("Got polling response", type: this.logType)
602599

603-
if let str = NSString(data: data!, encoding: NSUTF8StringEncoding) as? String {
604-
dispatch_async(this.parseQueue) {[weak this] in
605-
this?.parsePollingMessage(str)
600+
if let str = String(data: data!, encoding: NSUTF8StringEncoding) {
601+
dispatch_async(this.parseQueue) {
602+
this.parsePollingMessage(str)
606603
}
607604
}
608605

@@ -666,10 +663,10 @@ extension SocketEngine {
666663

667664
this.waitingForPost = false
668665

669-
dispatch_async(this.emitQueue) {[weak this] in
670-
if !(this?.fastUpgrade ?? true) {
671-
this?.flushWaitingForPost()
672-
this?.doPoll()
666+
dispatch_async(this.emitQueue) {
667+
if !this.fastUpgrade {
668+
this.flushWaitingForPost()
669+
this.doPoll()
673670
}
674671
}
675672
}
@@ -712,12 +709,11 @@ extension SocketEngine {
712709

713710
/// Send polling message.
714711
/// Only call on emitQueue
715-
private func sendPollMessage(var msg: String, withType type: SocketEnginePacketType,
712+
private func sendPollMessage(message: String, withType type: SocketEnginePacketType,
716713
datas:[NSData]? = nil) {
717-
DefaultSocketLogger.Logger.log("Sending poll: %@ as type: %@", type: logType, args: msg, type.rawValue)
718-
719-
doubleEncodeUTF8(&msg)
720-
let strMsg = "\(type.rawValue)\(msg)"
714+
DefaultSocketLogger.Logger.log("Sending poll: %@ as type: %@", type: logType, args: message, type.rawValue)
715+
let fixedMessage = doubleEncodeUTF8(message)
716+
let strMsg = "\(type.rawValue)\(fixedMessage)"
721717

722718
postWait.append(strMsg)
723719

@@ -749,7 +745,7 @@ extension SocketEngine {
749745
ws?.writeString("\(type.rawValue)\(str)")
750746

751747
for data in datas ?? [] {
752-
if case let Either.Left(bin) = createBinaryDataForSend(data) {
748+
if case let .Left(bin) = createBinaryDataForSend(data) {
753749
ws?.writeData(bin)
754750
}
755751
}

Source/SocketFixUTF8.swift

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,20 @@
2525

2626
import Foundation
2727

28-
func fixDoubleUTF8(inout name: String) {
29-
if let utf8 = name.dataUsingEncoding(NSISOLatin1StringEncoding),
28+
func fixDoubleUTF8(string: String) -> String {
29+
if let utf8 = string.dataUsingEncoding(NSISOLatin1StringEncoding),
3030
latin1 = NSString(data: utf8, encoding: NSUTF8StringEncoding) {
31-
name = latin1 as String
31+
return latin1 as String
32+
} else {
33+
return string
3234
}
3335
}
3436

35-
func doubleEncodeUTF8(inout str: String) {
36-
if let latin1 = str.dataUsingEncoding(NSUTF8StringEncoding),
37+
func doubleEncodeUTF8(string: String) -> String {
38+
if let latin1 = string.dataUsingEncoding(NSUTF8StringEncoding),
3739
utf8 = NSString(data: latin1, encoding: NSISOLatin1StringEncoding) {
38-
str = utf8 as String
40+
return utf8 as String
41+
} else {
42+
return string
3943
}
4044
}

Source/SocketPacket.swift

Lines changed: 19 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,9 @@ struct SocketPacket {
9595
}
9696
}
9797

98-
private func completeMessage(var message: String, ack: Bool) -> String {
98+
private func completeMessage(message: String, ack: Bool) -> String {
99+
var restOfMessage = ""
100+
99101
if data.count == 0 {
100102
return message + "]"
101103
}
@@ -107,28 +109,25 @@ struct SocketPacket {
107109
options: NSJSONWritingOptions(rawValue: 0))
108110
let jsonString = NSString(data: jsonSend, encoding: NSUTF8StringEncoding)
109111

110-
message += jsonString! as String + ","
112+
restOfMessage += jsonString! as String + ","
111113
} catch {
112114
DefaultSocketLogger.Logger.error("Error creating JSON object in SocketPacket.completeMessage",
113115
type: SocketPacket.logType)
114116
}
115-
} else if var str = arg as? String {
116-
str = str["\n"] ~= "\\\\n"
117-
str = str["\r"] ~= "\\\\r"
118-
119-
message += "\"\(str)\","
117+
} else if let str = arg as? String {
118+
restOfMessage += "\"\((str["\n"] ~= "\\\\n")["\r"] ~= "\\\\r")\","
120119
} else if arg is NSNull {
121-
message += "null,"
120+
restOfMessage += "null,"
122121
} else {
123-
message += "\(arg),"
122+
restOfMessage += "\(arg),"
124123
}
125124
}
126125

127-
if message != "" {
128-
message.removeAtIndex(message.endIndex.predecessor())
126+
if restOfMessage != "" {
127+
restOfMessage.removeAtIndex(restOfMessage.endIndex.predecessor())
129128
}
130129

131-
return message + "]"
130+
return message + restOfMessage + "]"
132131
}
133132

134133
private func createAck() -> String {
@@ -191,7 +190,7 @@ struct SocketPacket {
191190
private func createPacketString() -> String {
192191
let str: String
193192

194-
if type == PacketType.Event || type == PacketType.BinaryEvent {
193+
if type == .Event || type == .BinaryEvent {
195194
str = createMessageForEvent()
196195
} else {
197196
str = createAck()
@@ -226,14 +225,8 @@ struct SocketPacket {
226225
}
227226

228227
return newDict
229-
} else if let arr = data as? NSArray {
230-
let newArr = NSMutableArray(array: arr)
231-
232-
for i in 0..<arr.count {
233-
newArr[i] = _fillInPlaceholders(arr[i])
234-
}
235-
236-
return newArr
228+
} else if let arr = data as? [AnyObject] {
229+
return arr.map({_fillInPlaceholders($0)})
237230
} else {
238231
return data
239232
}
@@ -268,17 +261,13 @@ extension SocketPacket {
268261
private extension SocketPacket {
269262
static func shred(data: AnyObject, inout binary: [NSData]) -> AnyObject {
270263
if let bin = data as? NSData {
271-
let placeholder = ["_placeholder" :true, "num": binary.count]
264+
let placeholder = ["_placeholder": true, "num": binary.count]
272265

273266
binary.append(bin)
274267

275268
return placeholder
276-
} else if var arr = data as? [AnyObject] {
277-
for i in 0..<arr.count {
278-
arr[i] = shred(arr[i], binary: &binary)
279-
}
280-
281-
return arr
269+
} else if let arr = data as? [AnyObject] {
270+
return arr.map({shred($0, binary: &binary)})
282271
} else if let dict = data as? NSDictionary {
283272
let mutDict = NSMutableDictionary(dictionary: dict)
284273

@@ -292,13 +281,9 @@ private extension SocketPacket {
292281
}
293282
}
294283

295-
static func deconstructData(var data: [AnyObject]) -> ([AnyObject], [NSData]) {
284+
static func deconstructData(data: [AnyObject]) -> ([AnyObject], [NSData]) {
296285
var binary = [NSData]()
297286

298-
for i in 0..<data.count {
299-
data[i] = shred(data[i], binary: &binary)
300-
}
301-
302-
return (data, binary)
287+
return (data.map({shred($0, binary: &binary)}), binary)
303288
}
304289
}

0 commit comments

Comments
 (0)