Просмотр исходного кода

Ready for swift-3.0-preview-1-ubuntu15.10.

kolakowski 10 лет назад
Родитель
Сommit
e71809d133
2 измененных файлов с 19 добавлено и 8 удалено
  1. 0 1
      Sources/Swifter/HttpResponse.swift
  2. 19 7
      Sources/Swifter/HttpServerIO.swift

+ 0 - 1
Sources/Swifter/HttpResponse.swift

@@ -15,7 +15,6 @@ public enum SerializationError: ErrorProtocol {
 public protocol HttpResponseBodyWriter {
     func write(_ data: [UInt8])
     func write(_ data: ArraySlice<UInt8>)
-    func write(_ data: Data)
 }
 
 public enum HttpResponseBody {

+ 19 - 7
Sources/Swifter/HttpServerIO.swift

@@ -104,9 +104,6 @@ public class HttpServerIO {
         func write(_ data: [UInt8]) {
             write(ArraySlice(data))
         }
-        func write(_ data: Data) {
-            data.withUnsafeBytes { write(Array(UnsafeBufferPointer(start: $0, count: data.count))) }
-        }
         func write(_ data: ArraySlice<UInt8>) {
             do {
                 try socket.writeUInt8(data)
@@ -148,6 +145,19 @@ public class HttpServerIO {
     
 import Glibc
 
+public class Lock {
+    
+    private var mutex = pthread_mutex_t()
+    
+    init() { pthread_mutex_init(&mutex, nil) }
+    
+    public func lock() { pthread_mutex_lock(&mutex) }
+    
+    public func unlock() { pthread_mutex_unlock(&mutex) }
+    
+    deinit { pthread_mutex_destroy(&mutex) }
+}
+
 public class DispatchQueue {
     
     private static let instance = DispatchQueue()
@@ -170,10 +180,12 @@ public class DispatchQueue {
     public func async(execute work: @convention(block) () -> Swift.Void) {
         let context = UnsafeMutablePointer<Void>(OpaquePointer(bitPattern: Unmanaged.passRetained(DispatchContext(work))))
         var pthread: pthread_t = 0
-        pthread_create(&pthread, nil, { (context: UnsafeMutablePointer<Swift.Void>) -> UnsafeMutablePointer<Swift.Void>? in
-            let unmanaged = Unmanaged<DispatchContext>.fromOpaque(OpaquePointer(context))
-            unmanaged.takeUnretainedValue().block()
-            unmanaged.release()
+        pthread_create(&pthread, nil, { (context: UnsafeMutablePointer<Swift.Void>?) -> UnsafeMutablePointer<Swift.Void>? in
+	    if let context = context {
+                let unmanaged = Unmanaged<DispatchContext>.fromOpaque(OpaquePointer(context))
+                unmanaged.takeUnretainedValue().block()
+                unmanaged.release()
+            }
             return nil
         }, context)
     }