|
|
@@ -108,16 +108,53 @@ open class SessionDelegate: NSObject {
|
|
|
#if !os(watchOS)
|
|
|
|
|
|
/// Overrides default behavior for URLSessionStreamDelegate method `urlSession(_:readClosedFor:)`.
|
|
|
- open var streamTaskReadClosed: ((URLSession, URLSessionStreamTask) -> Void)?
|
|
|
+ @available(iOS 9.0, macOS 10.11, tvOS 9.0, *)
|
|
|
+ open var streamTaskReadClosed: ((URLSession, URLSessionStreamTask) -> Void)? {
|
|
|
+ get {
|
|
|
+ return _streamTaskReadClosed as? (URLSession, URLSessionStreamTask) -> Void
|
|
|
+ }
|
|
|
+ set {
|
|
|
+ _streamTaskReadClosed = newValue
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
/// Overrides default behavior for URLSessionStreamDelegate method `urlSession(_:writeClosedFor:)`.
|
|
|
- open var streamTaskWriteClosed: ((URLSession, URLSessionStreamTask) -> Void)?
|
|
|
+ @available(iOS 9.0, macOS 10.11, tvOS 9.0, *)
|
|
|
+ open var streamTaskWriteClosed: ((URLSession, URLSessionStreamTask) -> Void)? {
|
|
|
+ get {
|
|
|
+ return _streamTaskWriteClosed as? (URLSession, URLSessionStreamTask) -> Void
|
|
|
+ }
|
|
|
+ set {
|
|
|
+ _streamTaskWriteClosed = newValue
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
/// Overrides default behavior for URLSessionStreamDelegate method `urlSession(_:betterRouteDiscoveredFor:)`.
|
|
|
- open var streamTaskBetterRouteDiscovered: ((URLSession, URLSessionStreamTask) -> Void)?
|
|
|
+ @available(iOS 9.0, macOS 10.11, tvOS 9.0, *)
|
|
|
+ open var streamTaskBetterRouteDiscovered: ((URLSession, URLSessionStreamTask) -> Void)? {
|
|
|
+ get {
|
|
|
+ return _streamTaskBetterRouteDiscovered as? (URLSession, URLSessionStreamTask) -> Void
|
|
|
+ }
|
|
|
+ set {
|
|
|
+ _streamTaskBetterRouteDiscovered = newValue
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
/// Overrides default behavior for URLSessionStreamDelegate method `urlSession(_:streamTask:didBecome:outputStream:)`.
|
|
|
- open var streamTaskDidBecomeInputAndOutputStreams: ((URLSession, URLSessionStreamTask, InputStream, OutputStream) -> Void)?
|
|
|
+ @available(iOS 9.0, macOS 10.11, tvOS 9.0, *)
|
|
|
+ open var streamTaskDidBecomeInputAndOutputStreams: ((URLSession, URLSessionStreamTask, InputStream, OutputStream) -> Void)? {
|
|
|
+ get {
|
|
|
+ return _streamTaskDidBecomeInputStream as? (URLSession, URLSessionStreamTask, InputStream, OutputStream) -> Void
|
|
|
+ }
|
|
|
+ set {
|
|
|
+ _streamTaskDidBecomeInputStream = newValue
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ var _streamTaskReadClosed: Any?
|
|
|
+ var _streamTaskWriteClosed: Any?
|
|
|
+ var _streamTaskBetterRouteDiscovered: Any?
|
|
|
+ var _streamTaskDidBecomeInputStream: Any?
|
|
|
|
|
|
#endif
|
|
|
|
|
|
@@ -166,17 +203,19 @@ 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
|
|
|
+ if #available(iOS 9.0, macOS 10.11, tvOS 9.0, *) {
|
|
|
+ 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
|
|
|
|
|
|
@@ -637,6 +676,7 @@ extension SessionDelegate: URLSessionDownloadDelegate {
|
|
|
|
|
|
#if !os(watchOS)
|
|
|
|
|
|
+@available(iOS 9.0, macOS 10.11, tvOS 9.0, *)
|
|
|
extension SessionDelegate: URLSessionStreamDelegate {
|
|
|
/// Tells the delegate that the read side of the connection has been closed.
|
|
|
///
|