소스 검색

Pass `CallOptions` through generated stub (#1911)

Motivation:

`CallOptions` is passed through the RPC methods in `GRPCClient` and set to the default if none (`CallOptions`) is provided. In order to make `CallOptions` easier to access, it will be passed through the RPC methods in the generated stub.

Modifications:

- Unset the default `CallOptions` for the RPC methods in `GRPCClient`.
- Add a new `options: CallOptions` parameter to the RPC methods in the generated stub, with a default value of `CallOptions.defaults`.

Result:

`CallOptions` will be passed through the generated stub rather than through `GRPCClient`.
Clinton Nkwocha 1 년 전
부모
커밋
ba7ebfa3c5
1개의 변경된 파일10개의 추가작업 그리고 0개의 파일을 삭제
  1. 10 0
      Tests/GRPCProtobufCodeGenTests/ProtobufCodeGeneratorTests.swift

+ 10 - 0
Tests/GRPCProtobufCodeGenTests/ProtobufCodeGeneratorTests.swift

@@ -87,6 +87,7 @@ final class ProtobufCodeGeneratorTests: XCTestCase {
                 request: ClientRequest.Single<Hello_World_Greeter.Method.SayHello.Input>,
                 serializer: some MessageSerializer<Hello_World_Greeter.Method.SayHello.Input>,
                 deserializer: some MessageDeserializer<Hello_World_Greeter.Method.SayHello.Output>,
+                options: CallOptions,
                 _ body: @Sendable @escaping (ClientResponse.Single<Hello_World_Greeter.Method.SayHello.Output>) async throws -> R
             ) async throws -> R where R: Sendable
         }
@@ -95,12 +96,14 @@ final class ProtobufCodeGeneratorTests: XCTestCase {
         extension Hello_World_Greeter.ClientProtocol {
             internal func sayHello<R>(
                 request: ClientRequest.Single<Hello_World_Greeter.Method.SayHello.Input>,
+                options: CallOptions = .defaults,
                 _ body: @Sendable @escaping (ClientResponse.Single<Hello_World_Greeter.Method.SayHello.Output>) async throws -> R
             ) async throws -> R where R: Sendable {
                 try await self.sayHello(
                     request: request,
                     serializer: ProtobufSerializer<Hello_World_Greeter.Method.SayHello.Input>(),
                     deserializer: ProtobufDeserializer<Hello_World_Greeter.Method.SayHello.Output>(),
+                    options: options,
                     body
                 )
             }
@@ -120,6 +123,7 @@ final class ProtobufCodeGeneratorTests: XCTestCase {
                 request: ClientRequest.Single<Hello_World_Greeter.Method.SayHello.Input>,
                 serializer: some MessageSerializer<Hello_World_Greeter.Method.SayHello.Input>,
                 deserializer: some MessageDeserializer<Hello_World_Greeter.Method.SayHello.Output>,
+                options: CallOptions = .defaults,
                 _ body: @Sendable @escaping (ClientResponse.Single<Hello_World_Greeter.Method.SayHello.Output>) async throws -> R
             ) async throws -> R where R: Sendable {
                 try await self.client.unary(
@@ -127,6 +131,7 @@ final class ProtobufCodeGeneratorTests: XCTestCase {
                     descriptor: Hello_World_Greeter.Method.SayHello.descriptor,
                     serializer: serializer,
                     deserializer: deserializer,
+                    options: options,
                     handler: body
                 )
             }
@@ -335,6 +340,7 @@ final class ProtobufCodeGeneratorTests: XCTestCase {
             request: ClientRequest.Single<Greeter.Method.SayHello.Input>,
             serializer: some MessageSerializer<Greeter.Method.SayHello.Input>,
             deserializer: some MessageDeserializer<Greeter.Method.SayHello.Output>,
+            options: CallOptions,
             _ body: @Sendable @escaping (ClientResponse.Single<Greeter.Method.SayHello.Output>) async throws -> R
           ) async throws -> R where R: Sendable
         }
@@ -343,12 +349,14 @@ final class ProtobufCodeGeneratorTests: XCTestCase {
         extension Greeter.ClientProtocol {
           package func sayHello<R>(
             request: ClientRequest.Single<Greeter.Method.SayHello.Input>,
+            options: CallOptions = .defaults,
             _ body: @Sendable @escaping (ClientResponse.Single<Greeter.Method.SayHello.Output>) async throws -> R
           ) async throws -> R where R: Sendable {
             try await self.sayHello(
               request: request,
               serializer: ProtobufSerializer<Greeter.Method.SayHello.Input>(),
               deserializer: ProtobufDeserializer<Greeter.Method.SayHello.Output>(),
+              options: options,
               body
             )
           }
@@ -368,6 +376,7 @@ final class ProtobufCodeGeneratorTests: XCTestCase {
             request: ClientRequest.Single<Greeter.Method.SayHello.Input>,
             serializer: some MessageSerializer<Greeter.Method.SayHello.Input>,
             deserializer: some MessageDeserializer<Greeter.Method.SayHello.Output>,
+            options: CallOptions = .defaults,
             _ body: @Sendable @escaping (ClientResponse.Single<Greeter.Method.SayHello.Output>) async throws -> R
           ) async throws -> R where R: Sendable {
             try await self.client.unary(
@@ -375,6 +384,7 @@ final class ProtobufCodeGeneratorTests: XCTestCase {
               descriptor: Greeter.Method.SayHello.descriptor,
               serializer: serializer,
               deserializer: deserializer,
+              options: options,
               handler: body
             )
           }