Explorar o código

Added responseToSelector customization for stream delegate APIs.

Christian Noon %!s(int64=9) %!d(string=hai) anos
pai
achega
50f653388f
Modificáronse 1 ficheiros con 17 adicións e 2 borrados
  1. 17 2
      Source/SessionDelegate.swift

+ 17 - 2
Source/SessionDelegate.swift

@@ -117,7 +117,7 @@ open class SessionDelegate: NSObject {
     open var streamTaskBetterRouteDiscovered: ((URLSession, URLSessionStreamTask) -> Void)?
 
     /// Overrides default behavior for URLSessionStreamDelegate method `urlSession(_:streamTask:didBecome:outputStream:)`.
-    open var streamTaskDidBecomeInputStream: ((URLSession, URLSessionStreamTask, InputStream, OutputStream) -> Void)?
+    open var streamTaskDidBecomeInputAndOutputStreams: ((URLSession, URLSessionStreamTask, InputStream, OutputStream) -> Void)?
 
 #endif
 
@@ -165,6 +165,21 @@ open class SessionDelegate: NSObject {
             }
         #endif
 
+        #if !os(watchOS)
+            switch selector {
+            case #selector(URLSessionStreamDelegate.urlSession(_:readClosedFor:)):
+                return streamTaskReadClosed != nil
+            case #selector(URLSessionStreamDelegate.urlSession(_:writeClosedFor:)):
+                return streamTaskWriteClosed != nil
+            case #selector(URLSessionStreamDelegate.urlSession(_:betterRouteDiscoveredFor:)):
+                return streamTaskBetterRouteDiscovered != nil
+            case #selector(URLSessionStreamDelegate.urlSession(_:streamTask:didBecome:outputStream:)):
+                return streamTaskDidBecomeInputAndOutputStreams != nil
+            default:
+                break
+            }
+        #endif
+
         switch selector {
         case #selector(URLSessionDelegate.urlSession(_:didBecomeInvalidWithError:)):
             return sessionDidBecomeInvalidWithError != nil
@@ -644,7 +659,7 @@ extension SessionDelegate: URLSessionStreamDelegate {
         didBecome inputStream: InputStream,
         outputStream: OutputStream)
     {
-        streamTaskDidBecomeInputStream?(session, streamTask, inputStream, outputStream)
+        streamTaskDidBecomeInputAndOutputStreams?(session, streamTask, inputStream, outputStream)
     }
 }