Browse Source

Merge pull request #108 from MihoSasaki/fix_call

make return completion when event is GRPC_QUEUE_SHUTDOWN at Completio…
Tim Burks 7 years ago
parent
commit
48281af944
1 changed files with 13 additions and 2 deletions
  1. 13 2
      Sources/gRPC/CompletionQueue.swift

+ 13 - 2
Sources/gRPC/CompletionQueue.swift

@@ -125,8 +125,19 @@ internal class CompletionQueue {
           }
           break
         case GRPC_QUEUE_SHUTDOWN:
-          running = false
-          break
+            running = false
+            do {
+                for operationGroup in self.operationGroups.values {
+                    operationGroup.success = false
+                    try operationGroup.completion(operationGroup)
+                }
+            } catch (let callError) {
+                print("CompletionQueue runToCompletion: grpc error \(callError)")
+            }
+            self.operationGroupsMutex.lock()
+            self.operationGroups = [:]
+            self.operationGroupsMutex.unlock()
+            break
         case GRPC_QUEUE_TIMEOUT:
           break
         default: