浏览代码

PR changes

Sebastian Thiebaud 7 年之前
父节点
当前提交
0d25ef84b2
共有 1 个文件被更改,包括 8 次插入6 次删除
  1. 8 6
      Sources/SwiftGRPC/Core/Channel.swift

+ 8 - 6
Sources/SwiftGRPC/Core/Channel.swift

@@ -73,6 +73,7 @@ public class Channel {
   }
 
   deinit {
+    connectivityObservers.forEach { $0.shutdown() }
     cgrpc_channel_destroy(underlyingChannel)
     completionQueue.shutdown()
   }
@@ -101,8 +102,7 @@ public class Channel {
   ///
   /// - Parameter callback: block executed every time a new connectivity state is detected
   public func subscribe(callback: @escaping (ConnectivityState) -> Void) {
-    let observer = ConnectivityObserver(underlyingChannel: underlyingChannel, currentState: connectivityState(), callback: callback)
-    connectivityObservers.append(observer)
+    connectivityObservers.append(ConnectivityObserver(underlyingChannel: underlyingChannel, currentState: connectivityState(), callback: callback))
   }
 }
 
@@ -124,15 +124,13 @@ private extension Channel {
     }
 
     deinit {
-      completionQueue.shutdown()
+      shutdown()
     }
 
     private func run() {
       let spinloopThreadQueue = DispatchQueue(label: "SwiftGRPC.ConnectivityObserver.run.spinloopThread")
 
-      spinloopThreadQueue.async { [weak self] in
-        guard let `self` = self else { return }
-
+      spinloopThreadQueue.async {
         while true  {
           guard let underlyingState = self.lastState.underlyingState else { return }
           
@@ -159,6 +157,10 @@ private extension Channel {
         }
       }
     }
+    
+    func shutdown() {
+      completionQueue.shutdown()
+    }
   }
 }