From 781a9e32caf96c036af1efcf47ba5423d3f738d3 Mon Sep 17 00:00:00 2001 From: Erik Date: Sat, 8 Jul 2017 09:40:50 -0400 Subject: [PATCH] Update starscream for new dep; add spm build --- .travis.yml | 1 + Source/Compression.swift | 56 ++++++++++++++++++++-------------------- zlib/module.modulemap | 3 ++- 3 files changed, 31 insertions(+), 29 deletions(-) diff --git a/.travis.yml b/.travis.yml index 87fa1ab..ad25aeb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,4 +12,5 @@ before_install: script: - xcodebuild -project Socket.IO-Client-Swift.xcodeproj -scheme SocketIO-Mac build-for-testing -quiet - xctool -project Socket.IO-Client-Swift.xcodeproj -scheme SocketIO-Mac run-tests --parallelize + - swift build #script: xcodebuild -project Socket.IO-Client-Swift.xcodeproj -scheme SocketIO-Mac build test diff --git a/Source/Compression.swift b/Source/Compression.swift index bc4b29f..36f1978 100644 --- a/Source/Compression.swift +++ b/Source/Compression.swift @@ -25,19 +25,19 @@ // ////////////////////////////////////////////////////////////////////////////////////////////////// import Foundation -import zlib +import CZLib class Decompressor { private var strm = z_stream() private var buffer = [UInt8](repeating: 0, count: 0x2000) private var inflateInitialized = false private let windowBits:Int - + init?(windowBits:Int) { self.windowBits = windowBits guard initInflate() else { return nil } } - + private func initInflate() -> Bool { if Z_OK == inflateInit2_(&strm, -CInt(windowBits), ZLIB_VERSION, CInt(MemoryLayout.size)) @@ -47,59 +47,59 @@ class Decompressor { } return false } - + func reset() throws { teardownInflate() guard initInflate() else { throw NSError() } } - + func decompress(_ data: Data, finish: Bool) throws -> Data { return try data.withUnsafeBytes { (bytes:UnsafePointer) -> Data in return try decompress(bytes: bytes, count: data.count, finish: finish) } } - + func decompress(bytes: UnsafePointer, count: Int, finish: Bool) throws -> Data { var decompressed = Data() try decompress(bytes: bytes, count: count, out: &decompressed) - + if finish { let tail:[UInt8] = [0x00, 0x00, 0xFF, 0xFF] try decompress(bytes: tail, count: tail.count, out: &decompressed) } - + return decompressed - + } - + private func decompress(bytes: UnsafePointer, count: Int, out:inout Data) throws { var res:CInt = 0 strm.next_in = UnsafeMutablePointer(mutating: bytes) strm.avail_in = CUnsignedInt(count) - + repeat { strm.next_out = UnsafeMutablePointer(&buffer) strm.avail_out = CUnsignedInt(buffer.count) - + res = inflate(&strm, 0) - + let byteCount = buffer.count - Int(strm.avail_out) out.append(buffer, count: byteCount) } while res == Z_OK && strm.avail_out == 0 - + guard (res == Z_OK && strm.avail_out > 0) || (res == Z_BUF_ERROR && Int(strm.avail_out) == buffer.count) else { throw NSError(domain: WebSocket.ErrorDomain, code: Int(WebSocket.InternalErrorCode.compressionError.rawValue), userInfo: nil) } } - + private func teardownInflate() { if inflateInitialized, Z_OK == inflateEnd(&strm) { inflateInitialized = false } } - + deinit { teardownInflate() } @@ -110,12 +110,12 @@ class Compressor { private var buffer = [UInt8](repeating: 0, count: 0x2000) private var deflateInitialized = false private let windowBits:Int - + init?(windowBits: Int) { self.windowBits = windowBits guard initDeflate() else { return nil } } - + private func initDeflate() -> Bool { if Z_OK == deflateInit2_(&strm, Z_DEFAULT_COMPRESSION, Z_DEFLATED, -CInt(windowBits), 8, Z_DEFAULT_STRATEGY, @@ -126,48 +126,48 @@ class Compressor { } return false } - + func reset() throws { teardownDeflate() guard initDeflate() else { throw NSError() } } - + func compress(_ data: Data) throws -> Data { var compressed = Data() var res:CInt = 0 data.withUnsafeBytes { (ptr:UnsafePointer) -> Void in strm.next_in = UnsafeMutablePointer(mutating: ptr) strm.avail_in = CUnsignedInt(data.count) - + repeat { strm.next_out = UnsafeMutablePointer(&buffer) strm.avail_out = CUnsignedInt(buffer.count) - + res = deflate(&strm, Z_SYNC_FLUSH) - + let byteCount = buffer.count - Int(strm.avail_out) compressed.append(buffer, count: byteCount) } while res == Z_OK && strm.avail_out == 0 - + } - + guard res == Z_OK && strm.avail_out > 0 || (res == Z_BUF_ERROR && Int(strm.avail_out) == buffer.count) else { throw NSError(domain: WebSocket.ErrorDomain, code: Int(WebSocket.InternalErrorCode.compressionError.rawValue), userInfo: nil) } - + compressed.removeLast(4) return compressed } - + private func teardownDeflate() { if deflateInitialized, Z_OK == deflateEnd(&strm) { deflateInitialized = false } } - + deinit { teardownDeflate() } diff --git a/zlib/module.modulemap b/zlib/module.modulemap index 7172f84..1b2abee 100644 --- a/zlib/module.modulemap +++ b/zlib/module.modulemap @@ -1,6 +1,7 @@ -module zlib [system] { +module CZLib [system] { header "include.h" link "z" + export * } module CommonCrypto [system] { header "include.h"