Browse Source

Wrap nonstreaming call response parameters in a struct (dthurn@).

Tim Burks 9 years ago
parent
commit
f09fb3aef8

+ 4 - 4
Examples/Datastore/Datastore/DatastoreViewController.swift

@@ -120,9 +120,9 @@ class DatastoreViewController : NSViewController, NSTextFieldDelegate {
       }
       }
       _ = call.performNonStreamingCall(messageData: requestMessageData,
       _ = call.performNonStreamingCall(messageData: requestMessageData,
                                        metadata: requestMetadata)
                                        metadata: requestMetadata)
-      { (status, statusDetails, messageData, initialMetadata, trailingMetadata) in
-        print("Received status: \(status): \(statusDetails)")
-        if let messageData = messageData,
+      { (callResult) in
+        print("Received status: \(callResult.statusCode): \(callResult.statusMessage)")
+        if let messageData = callResult.resultData,
           let responseMessage = self.fileDescriptorSet.readMessage("RunQueryResponse",
           let responseMessage = self.fileDescriptorSet.readMessage("RunQueryResponse",
                                                                    data:messageData) {
                                                                    data:messageData) {
           responseMessage.display()
           responseMessage.display()
@@ -133,7 +133,7 @@ class DatastoreViewController : NSViewController, NSTextFieldDelegate {
           }
           }
         } else {
         } else {
           DispatchQueue.main.async {
           DispatchQueue.main.async {
-            self.outputField.stringValue = "No message received. gRPC Status \(status): \(statusDetails)"
+            self.outputField.stringValue = "No message received. gRPC Status \(callResult.statusCode): \(callResult.statusMessage)"
           }
           }
         }
         }
       }
       }

+ 4 - 4
Examples/Echo/Swift/Echo/EchoViewController.swift

@@ -114,9 +114,9 @@ class EchoViewController : NSViewController, NSTextFieldDelegate {
         }
         }
         _ = call.performNonStreamingCall(messageData: requestMessageData,
         _ = call.performNonStreamingCall(messageData: requestMessageData,
                                          metadata: requestMetadata)
                                          metadata: requestMetadata)
-        { (status, statusDetails, messageData, initialMetadata, trailingMetadata) in
-          print("Received status: \(status): \(statusDetails)")
-          if let messageData = messageData,
+        { (callResult) in
+          print("Received status: \(callResult.statusCode): \(callResult.statusMessage)")
+          if let messageData = callResult.resultData,
             let responseMessage = self.fileDescriptorSet.readMessage("EchoResponse",
             let responseMessage = self.fileDescriptorSet.readMessage("EchoResponse",
                                                                      data:messageData) {
                                                                      data:messageData) {
             responseMessage.forOneField("text") {(field) in
             responseMessage.forOneField("text") {(field) in
@@ -126,7 +126,7 @@ class EchoViewController : NSViewController, NSTextFieldDelegate {
             }
             }
           } else {
           } else {
             DispatchQueue.main.async {
             DispatchQueue.main.async {
-              self.outputField.stringValue = "No message received. gRPC Status \(status): \(statusDetails)"
+              self.outputField.stringValue = "No message received. gRPC Status \(callResult.statusCode): \(callResult.statusMessage)"
             }
             }
           }
           }
         }
         }

+ 5 - 5
Examples/Sessions/Sessions/Document.swift

@@ -173,17 +173,17 @@ class Document: NSDocument {
 
 
         _ = call.performNonStreamingCall(messageData: messageData!,
         _ = call.performNonStreamingCall(messageData: messageData!,
                                          metadata: metadata)
                                          metadata: metadata)
-        {(status, statusDetails, messageData, initialMetadata, trailingMetadata) in
+        {(callResult) in
 
 
-          if let initialMetadata = initialMetadata {
+          if let initialMetadata = callResult.initialMetadata {
             for j in 0..<initialMetadata.count() {
             for j in 0..<initialMetadata.count() {
               self.log("\(i): Received initial metadata -> " + initialMetadata.key(index:j)
               self.log("\(i): Received initial metadata -> " + initialMetadata.key(index:j)
                 + " : " + initialMetadata.value(index:j))
                 + " : " + initialMetadata.value(index:j))
             }
             }
           }
           }
 
 
-          self.log("\(i): Received status: \(status) \(statusDetails)")
-          if status != 0 {
+          self.log("\(i): Received status: \(callResult.statusCode) \(callResult.statusMessage)")
+          if callResult.statusCode != 0 {
             self.setIsRunning(false)
             self.setIsRunning(false)
           }
           }
           if let messageData = messageData {
           if let messageData = messageData {
@@ -191,7 +191,7 @@ class Document: NSDocument {
             self.log("\(i): Received message: " + messageString!)
             self.log("\(i): Received message: " + messageString!)
           }
           }
 
 
-          if let trailingMetadata = trailingMetadata {
+          if let trailingMetadata = callResult.trailingMetadata {
             for j in 0..<trailingMetadata.count() {
             for j in 0..<trailingMetadata.count() {
               self.log("\(i): Received trailing metadata -> " + trailingMetadata.key(index:j)
               self.log("\(i): Received trailing metadata -> " + trailingMetadata.key(index:j)
                 + " : " + trailingMetadata.value(index:j))
                 + " : " + trailingMetadata.value(index:j))

+ 5 - 5
Examples/StickyNotes/StickyNotes/StickyNoteViewController.swift

@@ -82,9 +82,9 @@ class StickyNoteViewController : NSViewController, NSTextFieldDelegate {
       _ = call.performNonStreamingCall(messageData: requestMessage.data(),
       _ = call.performNonStreamingCall(messageData: requestMessage.data(),
                                        metadata: requestMetadata,
                                        metadata: requestMetadata,
                                        completion:
                                        completion:
-        { (status, statusDetails, messageData, initialMetadata, trailingMetadata) in
+        { (callResult) in
 
 
-          if let initialMetadata = initialMetadata {
+          if let initialMetadata = callResult.initialMetadata {
             for j in 0..<initialMetadata.count() {
             for j in 0..<initialMetadata.count() {
               self.log("Received initial metadata -> "
               self.log("Received initial metadata -> "
                 + initialMetadata.key(index:j) + " : "
                 + initialMetadata.key(index:j) + " : "
@@ -92,9 +92,9 @@ class StickyNoteViewController : NSViewController, NSTextFieldDelegate {
             }
             }
           }
           }
 
 
-          self.log("Received status: \(status) \(statusDetails)")
+          self.log("Received status: \(callResult.statusCode) \(callResult.statusMessage)")
 
 
-          if let responseData = messageData,
+          if let responseData = callResult.resultData,
             let responseMessage = fileDescriptorSet.readMessage("StickyNoteResponse",
             let responseMessage = fileDescriptorSet.readMessage("StickyNoteResponse",
                                                                 data: responseData) {
                                                                 data: responseData) {
             responseMessage.forOneField("image") {(field) in
             responseMessage.forOneField("image") {(field) in
@@ -106,7 +106,7 @@ class StickyNoteViewController : NSViewController, NSTextFieldDelegate {
             }
             }
           }
           }
 
 
-          if let trailingMetadata = trailingMetadata {
+          if let trailingMetadata = callResult.trailingMetadata {
             for j in 0..<trailingMetadata.count() {
             for j in 0..<trailingMetadata.count() {
               self.log("Received trailing metadata -> "
               self.log("Received trailing metadata -> "
                 + trailingMetadata.key(index:j) + " : "
                 + trailingMetadata.key(index:j) + " : "

+ 19 - 7
Packages/gRPC/Sources/Call.swift

@@ -44,7 +44,15 @@ private class CallLock {
   static let sharedInstance = CallLock()
   static let sharedInstance = CallLock()
 }
 }
 
 
-public typealias CallCompletion = (Int, String?, Data?, Metadata?, Metadata?) -> Void
+public struct CallResult {
+  public var statusCode : Int
+  public var statusMessage : String?
+  public var resultData : Data?
+  public var initialMetadata : Metadata?
+  public var trailingMetadata : Metadata?
+}
+
+public typealias CallCompletion = (CallResult) -> Void
 public typealias SendMessageCompletion = (grpc_call_error) -> Void
 public typealias SendMessageCompletion = (grpc_call_error) -> Void
 
 
 /// A gRPC API call
 /// A gRPC API call
@@ -127,13 +135,17 @@ public class Call {
                                completion:
                                completion:
       {(success) in
       {(success) in
         if success {
         if success {
-          completion(operation_receiveStatusOnClient.status(),
-                     operation_receiveStatusOnClient.statusDetails(),
-                     operation_receiveMessage.message()?.data(),
-                     operation_receiveInitialMetadata.metadata(),
-                     operation_receiveStatusOnClient.metadata())
+          completion(CallResult(statusCode:operation_receiveStatusOnClient.status(),
+                                statusMessage:operation_receiveStatusOnClient.statusDetails(),
+                                resultData:operation_receiveMessage.message()?.data(),
+                                initialMetadata:operation_receiveInitialMetadata.metadata(),
+                                trailingMetadata:operation_receiveStatusOnClient.metadata()))
         } else {
         } else {
-          completion(0, nil, nil, nil, nil)
+          completion(CallResult(statusCode:0,
+                                statusMessage:nil,
+                                resultData:nil,
+                                initialMetadata:nil,
+                                trailingMetadata:nil))
         }
         }
     })
     })