Skip to content

Commit 911cac9

Browse files
committed
work on parser
1 parent d13d185 commit 911cac9

File tree

1 file changed

+78
-93
lines changed

1 file changed

+78
-93
lines changed

Diff for: SwiftIO/SocketParser.swift

+78-93
Original file line numberDiff line numberDiff line change
@@ -220,9 +220,6 @@ class SocketParser {
220220
return
221221
}
222222

223-
/**
224-
Begin check for message
225-
**/
226223
var messageGroups:[String]?
227224

228225
let type = stringMessage.removeAtIndex(stringMessage.startIndex)
@@ -231,7 +228,7 @@ class SocketParser {
231228
if let groups = stringMessage["(\\d*)\\/?(\\w*)?,?(\\d*)?\\[\"(.*?)\",?(.*?)?\\]$",
232229
NSRegularExpressionOptions.DotMatchesLineSeparators].groups() {
233230
messageGroups = groups
234-
231+
235232
var mesNum = messageGroups![1]
236233
var ackNum:String
237234
var namespace:String?
@@ -264,10 +261,7 @@ class SocketParser {
264261
socket.handleEvent(event, data: parsed, isInternalMessage: false,
265262
wantsAck: ackNum.toInt(), withAckType: 3)
266263
}
267-
268-
return
269264
}
270-
271265
}
272266
} else if type == "3" {
273267
if let ackGroup = stringMessage["(\\d*)\\/?(\\w*)?,?(\\d*)?\\[(.*?)?\\]$",
@@ -290,13 +284,11 @@ class SocketParser {
290284

291285
let ackData:AnyObject? = self.parseData("[\(messageGroups![4])]")
292286
socket.handleAck(ackNum.toInt()!, data: ackData)
293-
294-
return
295287
}
288+
} else {
289+
NSLog("Error in parsing message: %s", stringMessage)
290+
return
296291
}
297-
/**
298-
End Check for message
299-
**/
300292
}
301293

302294
// Handles binary data
@@ -352,94 +344,87 @@ class SocketParser {
352344
}
353345

354346
// Tries to parse a message that contains binary
355-
class func parseBinaryMessage(message:String, socket:SocketIOClient) {
347+
class func parseBinaryMessage(var message:String, socket:SocketIOClient) {
356348
// NSLog(message)
357349

358-
/**
359-
Begin check for binary placeholders
360-
**/
361350
var binaryGroup:[String]?
362351

363-
if let groups = message["^(\\d*)-\\/?(\\w*)?,?(\\d*)?\\[(\".*?\")?,?(.*)?\\]$",
364-
NSRegularExpressionOptions.DotMatchesLineSeparators].groups() {
365-
binaryGroup = groups
366-
} else if let groups = message["^(\\d*)-\\/?(\\w*)?,?(\\d*)?\\[(.*?)?\\]$",
367-
NSRegularExpressionOptions.DotMatchesLineSeparators].groups() {
368-
binaryGroup = groups
369-
} else {
370-
NSLog("Error in parsing binary message: %s", message)
371-
return
372-
}
352+
let type = message.removeAtIndex(message.startIndex)
373353

374-
if binaryGroup![1].hasPrefix("5") {
375-
// println(binaryGroup)
376-
var ackNum:String
377-
var event:String
378-
var mutMessageObject:String
379-
var namespace:String?
380-
var numberOfPlaceholders:String
381-
382-
let messageType = binaryGroup![1]
383-
384-
namespace = binaryGroup![2]
385-
if binaryGroup![3] != "" {
386-
ackNum = binaryGroup![3] as String
387-
} else if socket.nsp == nil && binaryGroup![2] != "" {
388-
ackNum = binaryGroup![2]
389-
} else {
390-
ackNum = ""
391-
}
392-
393-
numberOfPlaceholders = (messageType["5"] ~= "") as String
394-
event = (binaryGroup![4]["\""] ~= "") as String
395-
mutMessageObject = binaryGroup![5]
396-
397-
if namespace == "" && socket.nsp != nil {
398-
return
399-
}
400-
401-
let placeholdersRemoved = mutMessageObject["(\\{\"_placeholder\":true,\"num\":(\\d*)\\})"]
402-
~= "\"~~$2\""
403-
404-
var mes:SocketEvent
405-
if ackNum == "" {
406-
mes = SocketEvent(event: event, args: placeholdersRemoved,
407-
placeholders: numberOfPlaceholders.toInt()!)
408-
} else {
409-
socket.currentAck = ackNum.toInt()!
410-
mes = SocketEvent(event: event, args: placeholdersRemoved,
411-
placeholders: numberOfPlaceholders.toInt()!, ackNum: ackNum.toInt())
412-
}
413-
414-
socket.waitingData.append(mes)
415-
} else if binaryGroup![1].hasPrefix("6") {
416-
let messageType = binaryGroup![1]
417-
let numberOfPlaceholders = (messageType["6"] ~= "") as String
418-
var ackNum:String
419-
var nsp:String
420-
421-
if binaryGroup![3] == "" {
422-
ackNum = binaryGroup![2]
423-
nsp = ""
424-
} else {
425-
ackNum = binaryGroup![3]
426-
nsp = binaryGroup![2]
354+
if type == "5" {
355+
if let groups = message["^(\\d*)-\\/?(\\w*)?,?(\\d*)?\\[(\".*?\")?,?(.*)?\\]$",
356+
NSRegularExpressionOptions.DotMatchesLineSeparators].groups() {
357+
binaryGroup = groups
358+
359+
var ackNum:String
360+
var event:String
361+
var mutMessageObject:String
362+
var namespace:String?
363+
let numberOfPlaceholders = binaryGroup![1]
364+
365+
namespace = binaryGroup![2]
366+
if binaryGroup![3] != "" {
367+
ackNum = binaryGroup![3] as String
368+
} else if socket.nsp == nil && binaryGroup![2] != "" {
369+
ackNum = binaryGroup![2]
370+
} else {
371+
ackNum = ""
372+
}
373+
374+
event = (binaryGroup![4]["\""] ~= "") as String
375+
mutMessageObject = binaryGroup![5]
376+
377+
if namespace == "" && socket.nsp != nil {
378+
return
379+
}
380+
381+
let placeholdersRemoved = mutMessageObject["(\\{\"_placeholder\":true,\"num\":(\\d*)\\})"]
382+
~= "\"~~$2\""
383+
384+
var mes:SocketEvent
385+
if ackNum == "" {
386+
mes = SocketEvent(event: event, args: placeholdersRemoved,
387+
placeholders: numberOfPlaceholders.toInt()!)
388+
} else {
389+
socket.currentAck = ackNum.toInt()!
390+
mes = SocketEvent(event: event, args: placeholdersRemoved,
391+
placeholders: numberOfPlaceholders.toInt()!, ackNum: ackNum.toInt())
392+
}
393+
394+
socket.waitingData.append(mes)
427395
}
428-
429-
if nsp == "" && socket.nsp != nil {
430-
return
396+
} else if type == "6" {
397+
if let groups = message["^(\\d*)-\\/?(\\w*)?,?(\\d*)?\\[(.*?)?\\]$",
398+
NSRegularExpressionOptions.DotMatchesLineSeparators].groups() {
399+
binaryGroup = groups
400+
401+
let numberOfPlaceholders = binaryGroup![1]
402+
var ackNum:String
403+
var nsp:String
404+
405+
if binaryGroup![3] == "" {
406+
ackNum = binaryGroup![2]
407+
nsp = ""
408+
} else {
409+
ackNum = binaryGroup![3]
410+
nsp = binaryGroup![2]
411+
}
412+
413+
if nsp == "" && socket.nsp != nil {
414+
return
415+
}
416+
var mutMessageObject = binaryGroup![5]
417+
let placeholdersRemoved = mutMessageObject["(\\{\"_placeholder\":true,\"num\":(\\d*)\\})"]
418+
~= "\"~~$2\""
419+
420+
let event = SocketEvent(event: "", args: placeholdersRemoved,
421+
placeholders: numberOfPlaceholders.toInt()!, ackNum: ackNum.toInt(), justAck: true)
422+
423+
socket.waitingData.append(event)
431424
}
432-
var mutMessageObject = binaryGroup![5]
433-
let placeholdersRemoved = mutMessageObject["(\\{\"_placeholder\":true,\"num\":(\\d*)\\})"]
434-
~= "\"~~$2\""
435-
436-
let event = SocketEvent(event: "", args: placeholdersRemoved,
437-
placeholders: numberOfPlaceholders.toInt()!, ackNum: ackNum.toInt(), justAck: true)
438-
439-
socket.waitingData.append(event)
425+
} else {
426+
NSLog("Error in parsing binary message: %s", message)
427+
return
440428
}
441-
/**
442-
End check for binary placeholders
443-
**/
444429
}
445430
}

0 commit comments

Comments
 (0)