diff --git a/Cartfile.resolved b/Cartfile.resolved index 7d6c105..e35b9d1 100644 --- a/Cartfile.resolved +++ b/Cartfile.resolved @@ -1 +1 @@ -github "Gagnant/Socket" "0.1.6" +github "Gagnant/Socket" "0.1.7" diff --git a/Carthage/Checkouts/Socket b/Carthage/Checkouts/Socket index 436beb9..77016e0 160000 --- a/Carthage/Checkouts/Socket +++ b/Carthage/Checkouts/Socket @@ -1 +1 @@ -Subproject commit 436beb99b667aea6ff80818108d0cdd74e506100 +Subproject commit 77016e094c2450e3b59d64c14efa5fb8edcb33ce diff --git a/JSTP/Chunks.swift b/JSTP/Chunks.swift index 769d9f0..8d9dd38 100644 --- a/JSTP/Chunks.swift +++ b/JSTP/Chunks.swift @@ -10,30 +10,26 @@ import JavaScriptCore internal class Chunks { - fileprivate var buffer: String + private var buffer: Data init() { - buffer = kChunksFirst + buffer = Data() } - func add(_ chunk: String) -> JSValue! { + func add(_ chunk: Data) -> JSValue? { - buffer += chunk + buffer.append(chunk) - guard chunk.hasSuffix(kPacketDelimiter) else { + guard let source = String(data: buffer, encoding: .utf8), source.hasSuffix(kPacketDelimiter) else { return nil } - var chunks = buffer + kChunksLast - buffer = kChunksFirst - - chunks = chunks.replacingOccurrences(of: kPacketDelimiter, with: ",") - + buffer = Data() + + let chunks = (kChunksFirst + source + kChunksLast).replacingOccurrences(of: kPacketDelimiter, with: ",") let packets = Context.shared.parse(chunks) - guard packets.isUndefined == false, - packets.isNull == false else { - + guard packets.isUndefined == false, packets.isNull == false else { return nil } diff --git a/JSTP/Delegate.swift b/JSTP/Delegate.swift index 2feec8b..e1b9921 100644 --- a/JSTP/Delegate.swift +++ b/JSTP/Delegate.swift @@ -32,9 +32,9 @@ internal class TCPSocketDelegateImplementation : TCPSocketDelegate { connection.delegate?.connection(connection, didFailWithError: error) } - internal func socket(_ socket: TCPSocket, didReceiveMessage text: String) { + internal func socket(_ socket: TCPSocket, didReceiveData data: Data) { - guard let packets = connection.chunks.add(text) else { + guard let packets = connection.chunks.add(data) else { return }