diff --git a/Examples/echo/Sources/Generated/echo.grpc.swift b/Examples/echo/Sources/Generated/echo.grpc.swift index a782d7d4a..88b929b9a 100644 --- a/Examples/echo/Sources/Generated/echo.grpc.swift +++ b/Examples/echo/Sources/Generated/echo.grpc.swift @@ -87,27 +87,27 @@ extension GRPCCore.ServiceDescriptor { internal protocol Echo_Echo_StreamingServiceProtocol: GRPCCore.RegistrableRPCService { /// Immediately returns an echo of a request. func get( - request: GRPCCore.ServerRequest.Stream, + request: GRPCCore.StreamingServerRequest, context: GRPCCore.ServerContext - ) async throws -> GRPCCore.ServerResponse.Stream + ) async throws -> GRPCCore.StreamingServerResponse /// Splits a request into words and returns each word in a stream of messages. func expand( - request: GRPCCore.ServerRequest.Stream, + request: GRPCCore.StreamingServerRequest, context: GRPCCore.ServerContext - ) async throws -> GRPCCore.ServerResponse.Stream + ) async throws -> GRPCCore.StreamingServerResponse /// Collects a stream of messages and returns them concatenated when the caller closes. func collect( - request: GRPCCore.ServerRequest.Stream, + request: GRPCCore.StreamingServerRequest, context: GRPCCore.ServerContext - ) async throws -> GRPCCore.ServerResponse.Stream + ) async throws -> GRPCCore.StreamingServerResponse /// Streams back messages as they are received in an input stream. func update( - request: GRPCCore.ServerRequest.Stream, + request: GRPCCore.StreamingServerRequest, context: GRPCCore.ServerContext - ) async throws -> GRPCCore.ServerResponse.Stream + ) async throws -> GRPCCore.StreamingServerResponse } /// Conformance to `GRPCCore.RegistrableRPCService`. @@ -166,63 +166,63 @@ extension Echo_Echo.StreamingServiceProtocol { internal protocol Echo_Echo_ServiceProtocol: Echo_Echo.StreamingServiceProtocol { /// Immediately returns an echo of a request. func get( - request: GRPCCore.ServerRequest.Single, + request: GRPCCore.ServerRequest, context: GRPCCore.ServerContext - ) async throws -> GRPCCore.ServerResponse.Single + ) async throws -> GRPCCore.ServerResponse /// Splits a request into words and returns each word in a stream of messages. func expand( - request: GRPCCore.ServerRequest.Single, + request: GRPCCore.ServerRequest, context: GRPCCore.ServerContext - ) async throws -> GRPCCore.ServerResponse.Stream + ) async throws -> GRPCCore.StreamingServerResponse /// Collects a stream of messages and returns them concatenated when the caller closes. func collect( - request: GRPCCore.ServerRequest.Stream, + request: GRPCCore.StreamingServerRequest, context: GRPCCore.ServerContext - ) async throws -> GRPCCore.ServerResponse.Single + ) async throws -> GRPCCore.ServerResponse /// Streams back messages as they are received in an input stream. func update( - request: GRPCCore.ServerRequest.Stream, + request: GRPCCore.StreamingServerRequest, context: GRPCCore.ServerContext - ) async throws -> GRPCCore.ServerResponse.Stream + ) async throws -> GRPCCore.StreamingServerResponse } /// Partial conformance to `Echo_Echo_StreamingServiceProtocol`. @available(macOS 15.0, iOS 18.0, watchOS 11.0, tvOS 18.0, visionOS 2.0, *) extension Echo_Echo.ServiceProtocol { internal func get( - request: GRPCCore.ServerRequest.Stream, + request: GRPCCore.StreamingServerRequest, context: GRPCCore.ServerContext - ) async throws -> GRPCCore.ServerResponse.Stream { + ) async throws -> GRPCCore.StreamingServerResponse { let response = try await self.get( - request: GRPCCore.ServerRequest.Single(stream: request), + request: GRPCCore.ServerRequest(stream: request), context: context ) - return GRPCCore.ServerResponse.Stream(single: response) + return GRPCCore.StreamingServerResponse(single: response) } internal func expand( - request: GRPCCore.ServerRequest.Stream, + request: GRPCCore.StreamingServerRequest, context: GRPCCore.ServerContext - ) async throws -> GRPCCore.ServerResponse.Stream { + ) async throws -> GRPCCore.StreamingServerResponse { let response = try await self.expand( - request: GRPCCore.ServerRequest.Single(stream: request), + request: GRPCCore.ServerRequest(stream: request), context: context ) return response } internal func collect( - request: GRPCCore.ServerRequest.Stream, + request: GRPCCore.StreamingServerRequest, context: GRPCCore.ServerContext - ) async throws -> GRPCCore.ServerResponse.Stream { + ) async throws -> GRPCCore.StreamingServerResponse { let response = try await self.collect( request: request, context: context ) - return GRPCCore.ServerResponse.Stream(single: response) + return GRPCCore.StreamingServerResponse(single: response) } } @@ -230,47 +230,47 @@ extension Echo_Echo.ServiceProtocol { internal protocol Echo_Echo_ClientProtocol: Sendable { /// Immediately returns an echo of a request. func get( - request: GRPCCore.ClientRequest.Single, + request: GRPCCore.ClientRequest, serializer: some GRPCCore.MessageSerializer, deserializer: some GRPCCore.MessageDeserializer, options: GRPCCore.CallOptions, - _ body: @Sendable @escaping (GRPCCore.ClientResponse.Single) async throws -> R + _ body: @Sendable @escaping (GRPCCore.ClientResponse) async throws -> R ) async throws -> R where R: Sendable /// Splits a request into words and returns each word in a stream of messages. func expand( - request: GRPCCore.ClientRequest.Single, + request: GRPCCore.ClientRequest, serializer: some GRPCCore.MessageSerializer, deserializer: some GRPCCore.MessageDeserializer, options: GRPCCore.CallOptions, - _ body: @Sendable @escaping (GRPCCore.ClientResponse.Stream) async throws -> R + _ body: @Sendable @escaping (GRPCCore.StreamingClientResponse) async throws -> R ) async throws -> R where R: Sendable /// Collects a stream of messages and returns them concatenated when the caller closes. func collect( - request: GRPCCore.ClientRequest.Stream, + request: GRPCCore.StreamingClientRequest, serializer: some GRPCCore.MessageSerializer, deserializer: some GRPCCore.MessageDeserializer, options: GRPCCore.CallOptions, - _ body: @Sendable @escaping (GRPCCore.ClientResponse.Single) async throws -> R + _ body: @Sendable @escaping (GRPCCore.ClientResponse) async throws -> R ) async throws -> R where R: Sendable /// Streams back messages as they are received in an input stream. func update( - request: GRPCCore.ClientRequest.Stream, + request: GRPCCore.StreamingClientRequest, serializer: some GRPCCore.MessageSerializer, deserializer: some GRPCCore.MessageDeserializer, options: GRPCCore.CallOptions, - _ body: @Sendable @escaping (GRPCCore.ClientResponse.Stream) async throws -> R + _ body: @Sendable @escaping (GRPCCore.StreamingClientResponse) async throws -> R ) async throws -> R where R: Sendable } @available(macOS 15.0, iOS 18.0, watchOS 11.0, tvOS 18.0, visionOS 2.0, *) extension Echo_Echo.ClientProtocol { internal func get( - request: GRPCCore.ClientRequest.Single, + request: GRPCCore.ClientRequest, options: GRPCCore.CallOptions = .defaults, - _ body: @Sendable @escaping (GRPCCore.ClientResponse.Single) async throws -> R = { + _ body: @Sendable @escaping (GRPCCore.ClientResponse) async throws -> R = { try $0.message } ) async throws -> R where R: Sendable { @@ -284,9 +284,9 @@ extension Echo_Echo.ClientProtocol { } internal func expand( - request: GRPCCore.ClientRequest.Single, + request: GRPCCore.ClientRequest, options: GRPCCore.CallOptions = .defaults, - _ body: @Sendable @escaping (GRPCCore.ClientResponse.Stream) async throws -> R + _ body: @Sendable @escaping (GRPCCore.StreamingClientResponse) async throws -> R ) async throws -> R where R: Sendable { try await self.expand( request: request, @@ -298,9 +298,9 @@ extension Echo_Echo.ClientProtocol { } internal func collect( - request: GRPCCore.ClientRequest.Stream, + request: GRPCCore.StreamingClientRequest, options: GRPCCore.CallOptions = .defaults, - _ body: @Sendable @escaping (GRPCCore.ClientResponse.Single) async throws -> R = { + _ body: @Sendable @escaping (GRPCCore.ClientResponse) async throws -> R = { try $0.message } ) async throws -> R where R: Sendable { @@ -314,9 +314,9 @@ extension Echo_Echo.ClientProtocol { } internal func update( - request: GRPCCore.ClientRequest.Stream, + request: GRPCCore.StreamingClientRequest, options: GRPCCore.CallOptions = .defaults, - _ body: @Sendable @escaping (GRPCCore.ClientResponse.Stream) async throws -> R + _ body: @Sendable @escaping (GRPCCore.StreamingClientResponse) async throws -> R ) async throws -> R where R: Sendable { try await self.update( request: request, @@ -335,11 +335,11 @@ extension Echo_Echo.ClientProtocol { _ message: Echo_EchoRequest, metadata: GRPCCore.Metadata = [:], options: GRPCCore.CallOptions = .defaults, - onResponse handleResponse: @Sendable @escaping (GRPCCore.ClientResponse.Single) async throws -> Result = { + onResponse handleResponse: @Sendable @escaping (GRPCCore.ClientResponse) async throws -> Result = { try $0.message } ) async throws -> Result where Result: Sendable { - let request = GRPCCore.ClientRequest.Single( + let request = GRPCCore.ClientRequest( message: message, metadata: metadata ) @@ -355,9 +355,9 @@ extension Echo_Echo.ClientProtocol { _ message: Echo_EchoRequest, metadata: GRPCCore.Metadata = [:], options: GRPCCore.CallOptions = .defaults, - onResponse handleResponse: @Sendable @escaping (GRPCCore.ClientResponse.Stream) async throws -> Result + onResponse handleResponse: @Sendable @escaping (GRPCCore.StreamingClientResponse) async throws -> Result ) async throws -> Result where Result: Sendable { - let request = GRPCCore.ClientRequest.Single( + let request = GRPCCore.ClientRequest( message: message, metadata: metadata ) @@ -373,11 +373,11 @@ extension Echo_Echo.ClientProtocol { metadata: GRPCCore.Metadata = [:], options: GRPCCore.CallOptions = .defaults, requestProducer: @Sendable @escaping (GRPCCore.RPCWriter) async throws -> Void, - onResponse handleResponse: @Sendable @escaping (GRPCCore.ClientResponse.Single) async throws -> Result = { + onResponse handleResponse: @Sendable @escaping (GRPCCore.ClientResponse) async throws -> Result = { try $0.message } ) async throws -> Result where Result: Sendable { - let request = GRPCCore.ClientRequest.Stream( + let request = GRPCCore.StreamingClientRequest( metadata: metadata, producer: requestProducer ) @@ -393,9 +393,9 @@ extension Echo_Echo.ClientProtocol { metadata: GRPCCore.Metadata = [:], options: GRPCCore.CallOptions = .defaults, requestProducer: @Sendable @escaping (GRPCCore.RPCWriter) async throws -> Void, - onResponse handleResponse: @Sendable @escaping (GRPCCore.ClientResponse.Stream) async throws -> Result + onResponse handleResponse: @Sendable @escaping (GRPCCore.StreamingClientResponse) async throws -> Result ) async throws -> Result where Result: Sendable { - let request = GRPCCore.ClientRequest.Stream( + let request = GRPCCore.StreamingClientRequest( metadata: metadata, producer: requestProducer ) @@ -417,11 +417,11 @@ internal struct Echo_Echo_Client: Echo_Echo.ClientProtocol { /// Immediately returns an echo of a request. internal func get( - request: GRPCCore.ClientRequest.Single, + request: GRPCCore.ClientRequest, serializer: some GRPCCore.MessageSerializer, deserializer: some GRPCCore.MessageDeserializer, options: GRPCCore.CallOptions = .defaults, - _ body: @Sendable @escaping (GRPCCore.ClientResponse.Single) async throws -> R = { + _ body: @Sendable @escaping (GRPCCore.ClientResponse) async throws -> R = { try $0.message } ) async throws -> R where R: Sendable { @@ -437,11 +437,11 @@ internal struct Echo_Echo_Client: Echo_Echo.ClientProtocol { /// Splits a request into words and returns each word in a stream of messages. internal func expand( - request: GRPCCore.ClientRequest.Single, + request: GRPCCore.ClientRequest, serializer: some GRPCCore.MessageSerializer, deserializer: some GRPCCore.MessageDeserializer, options: GRPCCore.CallOptions = .defaults, - _ body: @Sendable @escaping (GRPCCore.ClientResponse.Stream) async throws -> R + _ body: @Sendable @escaping (GRPCCore.StreamingClientResponse) async throws -> R ) async throws -> R where R: Sendable { try await self.client.serverStreaming( request: request, @@ -455,11 +455,11 @@ internal struct Echo_Echo_Client: Echo_Echo.ClientProtocol { /// Collects a stream of messages and returns them concatenated when the caller closes. internal func collect( - request: GRPCCore.ClientRequest.Stream, + request: GRPCCore.StreamingClientRequest, serializer: some GRPCCore.MessageSerializer, deserializer: some GRPCCore.MessageDeserializer, options: GRPCCore.CallOptions = .defaults, - _ body: @Sendable @escaping (GRPCCore.ClientResponse.Single) async throws -> R = { + _ body: @Sendable @escaping (GRPCCore.ClientResponse) async throws -> R = { try $0.message } ) async throws -> R where R: Sendable { @@ -475,11 +475,11 @@ internal struct Echo_Echo_Client: Echo_Echo.ClientProtocol { /// Streams back messages as they are received in an input stream. internal func update( - request: GRPCCore.ClientRequest.Stream, + request: GRPCCore.StreamingClientRequest, serializer: some GRPCCore.MessageSerializer, deserializer: some GRPCCore.MessageDeserializer, options: GRPCCore.CallOptions = .defaults, - _ body: @Sendable @escaping (GRPCCore.ClientResponse.Stream) async throws -> R + _ body: @Sendable @escaping (GRPCCore.StreamingClientResponse) async throws -> R ) async throws -> R where R: Sendable { try await self.client.bidirectionalStreaming( request: request, diff --git a/Examples/echo/Sources/Subcommands/Serve.swift b/Examples/echo/Sources/Subcommands/Serve.swift index b5e126788..396ecef55 100644 --- a/Examples/echo/Sources/Subcommands/Serve.swift +++ b/Examples/echo/Sources/Subcommands/Serve.swift @@ -45,26 +45,26 @@ struct Serve: AsyncParsableCommand { @available(macOS 15.0, iOS 18.0, watchOS 11.0, tvOS 18.0, visionOS 2.0, *) struct EchoService: Echo_Echo_ServiceProtocol { func get( - request: ServerRequest.Single, + request: ServerRequest, context: ServerContext - ) async throws -> ServerResponse.Single { - return ServerResponse.Single(message: .with { $0.text = request.message.text }) + ) async throws -> ServerResponse { + return ServerResponse(message: .with { $0.text = request.message.text }) } func collect( - request: ServerRequest.Stream, + request: StreamingServerRequest, context: ServerContext - ) async throws -> ServerResponse.Single { + ) async throws -> ServerResponse { let messages = try await request.messages.reduce(into: []) { $0.append($1.text) } let joined = messages.joined(separator: " ") - return ServerResponse.Single(message: .with { $0.text = joined }) + return ServerResponse(message: .with { $0.text = joined }) } func expand( - request: ServerRequest.Single, + request: ServerRequest, context: ServerContext - ) async throws -> ServerResponse.Stream { - return ServerResponse.Stream { writer in + ) async throws -> StreamingServerResponse { + return StreamingServerResponse { writer in let parts = request.message.text.split(separator: " ") let messages = parts.map { part in Echo_EchoResponse.with { $0.text = String(part) } } try await writer.write(contentsOf: messages) @@ -73,10 +73,10 @@ struct EchoService: Echo_Echo_ServiceProtocol { } func update( - request: ServerRequest.Stream, + request: StreamingServerRequest, context: ServerContext - ) async throws -> ServerResponse.Stream { - return ServerResponse.Stream { writer in + ) async throws -> StreamingServerResponse { + return StreamingServerResponse { writer in for try await message in request.messages { try await writer.write(.with { $0.text = message.text }) } diff --git a/Examples/hello-world/Sources/Generated/helloworld.grpc.swift b/Examples/hello-world/Sources/Generated/helloworld.grpc.swift index 7ae35011b..bc729483a 100644 --- a/Examples/hello-world/Sources/Generated/helloworld.grpc.swift +++ b/Examples/hello-world/Sources/Generated/helloworld.grpc.swift @@ -61,9 +61,9 @@ extension GRPCCore.ServiceDescriptor { internal protocol Helloworld_Greeter_StreamingServiceProtocol: GRPCCore.RegistrableRPCService { /// Sends a greeting func sayHello( - request: GRPCCore.ServerRequest.Stream, + request: GRPCCore.StreamingServerRequest, context: GRPCCore.ServerContext - ) async throws -> GRPCCore.ServerResponse.Stream + ) async throws -> GRPCCore.StreamingServerResponse } /// Conformance to `GRPCCore.RegistrableRPCService`. @@ -90,23 +90,23 @@ extension Helloworld_Greeter.StreamingServiceProtocol { internal protocol Helloworld_Greeter_ServiceProtocol: Helloworld_Greeter.StreamingServiceProtocol { /// Sends a greeting func sayHello( - request: GRPCCore.ServerRequest.Single, + request: GRPCCore.ServerRequest, context: GRPCCore.ServerContext - ) async throws -> GRPCCore.ServerResponse.Single + ) async throws -> GRPCCore.ServerResponse } /// Partial conformance to `Helloworld_Greeter_StreamingServiceProtocol`. @available(macOS 15.0, iOS 18.0, watchOS 11.0, tvOS 18.0, visionOS 2.0, *) extension Helloworld_Greeter.ServiceProtocol { internal func sayHello( - request: GRPCCore.ServerRequest.Stream, + request: GRPCCore.StreamingServerRequest, context: GRPCCore.ServerContext - ) async throws -> GRPCCore.ServerResponse.Stream { + ) async throws -> GRPCCore.StreamingServerResponse { let response = try await self.sayHello( - request: GRPCCore.ServerRequest.Single(stream: request), + request: GRPCCore.ServerRequest(stream: request), context: context ) - return GRPCCore.ServerResponse.Stream(single: response) + return GRPCCore.StreamingServerResponse(single: response) } } @@ -115,20 +115,20 @@ extension Helloworld_Greeter.ServiceProtocol { internal protocol Helloworld_Greeter_ClientProtocol: Sendable { /// Sends a greeting func sayHello( - request: GRPCCore.ClientRequest.Single, + request: GRPCCore.ClientRequest, serializer: some GRPCCore.MessageSerializer, deserializer: some GRPCCore.MessageDeserializer, options: GRPCCore.CallOptions, - _ body: @Sendable @escaping (GRPCCore.ClientResponse.Single) async throws -> R + _ body: @Sendable @escaping (GRPCCore.ClientResponse) async throws -> R ) async throws -> R where R: Sendable } @available(macOS 15.0, iOS 18.0, watchOS 11.0, tvOS 18.0, visionOS 2.0, *) extension Helloworld_Greeter.ClientProtocol { internal func sayHello( - request: GRPCCore.ClientRequest.Single, + request: GRPCCore.ClientRequest, options: GRPCCore.CallOptions = .defaults, - _ body: @Sendable @escaping (GRPCCore.ClientResponse.Single) async throws -> R = { + _ body: @Sendable @escaping (GRPCCore.ClientResponse) async throws -> R = { try $0.message } ) async throws -> R where R: Sendable { @@ -149,11 +149,11 @@ extension Helloworld_Greeter.ClientProtocol { _ message: Helloworld_HelloRequest, metadata: GRPCCore.Metadata = [:], options: GRPCCore.CallOptions = .defaults, - onResponse handleResponse: @Sendable @escaping (GRPCCore.ClientResponse.Single) async throws -> Result = { + onResponse handleResponse: @Sendable @escaping (GRPCCore.ClientResponse) async throws -> Result = { try $0.message } ) async throws -> Result where Result: Sendable { - let request = GRPCCore.ClientRequest.Single( + let request = GRPCCore.ClientRequest( message: message, metadata: metadata ) @@ -176,11 +176,11 @@ internal struct Helloworld_Greeter_Client: Helloworld_Greeter.ClientProtocol { /// Sends a greeting internal func sayHello( - request: GRPCCore.ClientRequest.Single, + request: GRPCCore.ClientRequest, serializer: some GRPCCore.MessageSerializer, deserializer: some GRPCCore.MessageDeserializer, options: GRPCCore.CallOptions = .defaults, - _ body: @Sendable @escaping (GRPCCore.ClientResponse.Single) async throws -> R = { + _ body: @Sendable @escaping (GRPCCore.ClientResponse) async throws -> R = { try $0.message } ) async throws -> R where R: Sendable { diff --git a/Examples/hello-world/Sources/Subcommands/Serve.swift b/Examples/hello-world/Sources/Subcommands/Serve.swift index 6ae06d013..ef5dc2935 100644 --- a/Examples/hello-world/Sources/Subcommands/Serve.swift +++ b/Examples/hello-world/Sources/Subcommands/Serve.swift @@ -44,12 +44,12 @@ struct Serve: AsyncParsableCommand { struct Greeter: Helloworld_Greeter_ServiceProtocol { func sayHello( - request: ServerRequest.Single, + request: ServerRequest, context: ServerContext - ) async throws -> ServerResponse.Single { + ) async throws -> ServerResponse { var reply = Helloworld_HelloReply() let recipient = request.message.name.isEmpty ? "stranger" : request.message.name reply.message = "Hello, \(recipient)" - return ServerResponse.Single(message: reply) + return ServerResponse(message: reply) } } diff --git a/Examples/route-guide/Sources/Generated/route_guide.grpc.swift b/Examples/route-guide/Sources/Generated/route_guide.grpc.swift index 3e9f77ffc..2468fd7d7 100644 --- a/Examples/route-guide/Sources/Generated/route_guide.grpc.swift +++ b/Examples/route-guide/Sources/Generated/route_guide.grpc.swift @@ -93,9 +93,9 @@ internal protocol Routeguide_RouteGuide_StreamingServiceProtocol: GRPCCore.Regis /// A feature with an empty name is returned if there's no feature at the given /// position. func getFeature( - request: GRPCCore.ServerRequest.Stream, + request: GRPCCore.StreamingServerRequest, context: GRPCCore.ServerContext - ) async throws -> GRPCCore.ServerResponse.Stream + ) async throws -> GRPCCore.StreamingServerResponse /// A server-to-client streaming RPC. /// @@ -104,27 +104,27 @@ internal protocol Routeguide_RouteGuide_StreamingServiceProtocol: GRPCCore.Regis /// repeated field), as the rectangle may cover a large area and contain a /// huge number of features. func listFeatures( - request: GRPCCore.ServerRequest.Stream, + request: GRPCCore.StreamingServerRequest, context: GRPCCore.ServerContext - ) async throws -> GRPCCore.ServerResponse.Stream + ) async throws -> GRPCCore.StreamingServerResponse /// A client-to-server streaming RPC. /// /// Accepts a stream of Points on a route being traversed, returning a /// RouteSummary when traversal is completed. func recordRoute( - request: GRPCCore.ServerRequest.Stream, + request: GRPCCore.StreamingServerRequest, context: GRPCCore.ServerContext - ) async throws -> GRPCCore.ServerResponse.Stream + ) async throws -> GRPCCore.StreamingServerResponse /// A Bidirectional streaming RPC. /// /// Accepts a stream of RouteNotes sent while a route is being traversed, /// while receiving other RouteNotes (e.g. from other users). func routeChat( - request: GRPCCore.ServerRequest.Stream, + request: GRPCCore.StreamingServerRequest, context: GRPCCore.ServerContext - ) async throws -> GRPCCore.ServerResponse.Stream + ) async throws -> GRPCCore.StreamingServerResponse } /// Conformance to `GRPCCore.RegistrableRPCService`. @@ -189,9 +189,9 @@ internal protocol Routeguide_RouteGuide_ServiceProtocol: Routeguide_RouteGuide.S /// A feature with an empty name is returned if there's no feature at the given /// position. func getFeature( - request: GRPCCore.ServerRequest.Single, + request: GRPCCore.ServerRequest, context: GRPCCore.ServerContext - ) async throws -> GRPCCore.ServerResponse.Single + ) async throws -> GRPCCore.ServerResponse /// A server-to-client streaming RPC. /// @@ -200,63 +200,63 @@ internal protocol Routeguide_RouteGuide_ServiceProtocol: Routeguide_RouteGuide.S /// repeated field), as the rectangle may cover a large area and contain a /// huge number of features. func listFeatures( - request: GRPCCore.ServerRequest.Single, + request: GRPCCore.ServerRequest, context: GRPCCore.ServerContext - ) async throws -> GRPCCore.ServerResponse.Stream + ) async throws -> GRPCCore.StreamingServerResponse /// A client-to-server streaming RPC. /// /// Accepts a stream of Points on a route being traversed, returning a /// RouteSummary when traversal is completed. func recordRoute( - request: GRPCCore.ServerRequest.Stream, + request: GRPCCore.StreamingServerRequest, context: GRPCCore.ServerContext - ) async throws -> GRPCCore.ServerResponse.Single + ) async throws -> GRPCCore.ServerResponse /// A Bidirectional streaming RPC. /// /// Accepts a stream of RouteNotes sent while a route is being traversed, /// while receiving other RouteNotes (e.g. from other users). func routeChat( - request: GRPCCore.ServerRequest.Stream, + request: GRPCCore.StreamingServerRequest, context: GRPCCore.ServerContext - ) async throws -> GRPCCore.ServerResponse.Stream + ) async throws -> GRPCCore.StreamingServerResponse } /// Partial conformance to `Routeguide_RouteGuide_StreamingServiceProtocol`. @available(macOS 15.0, iOS 18.0, watchOS 11.0, tvOS 18.0, visionOS 2.0, *) extension Routeguide_RouteGuide.ServiceProtocol { internal func getFeature( - request: GRPCCore.ServerRequest.Stream, + request: GRPCCore.StreamingServerRequest, context: GRPCCore.ServerContext - ) async throws -> GRPCCore.ServerResponse.Stream { + ) async throws -> GRPCCore.StreamingServerResponse { let response = try await self.getFeature( - request: GRPCCore.ServerRequest.Single(stream: request), + request: GRPCCore.ServerRequest(stream: request), context: context ) - return GRPCCore.ServerResponse.Stream(single: response) + return GRPCCore.StreamingServerResponse(single: response) } internal func listFeatures( - request: GRPCCore.ServerRequest.Stream, + request: GRPCCore.StreamingServerRequest, context: GRPCCore.ServerContext - ) async throws -> GRPCCore.ServerResponse.Stream { + ) async throws -> GRPCCore.StreamingServerResponse { let response = try await self.listFeatures( - request: GRPCCore.ServerRequest.Single(stream: request), + request: GRPCCore.ServerRequest(stream: request), context: context ) return response } internal func recordRoute( - request: GRPCCore.ServerRequest.Stream, + request: GRPCCore.StreamingServerRequest, context: GRPCCore.ServerContext - ) async throws -> GRPCCore.ServerResponse.Stream { + ) async throws -> GRPCCore.StreamingServerResponse { let response = try await self.recordRoute( request: request, context: context ) - return GRPCCore.ServerResponse.Stream(single: response) + return GRPCCore.StreamingServerResponse(single: response) } } @@ -270,11 +270,11 @@ internal protocol Routeguide_RouteGuide_ClientProtocol: Sendable { /// A feature with an empty name is returned if there's no feature at the given /// position. func getFeature( - request: GRPCCore.ClientRequest.Single, + request: GRPCCore.ClientRequest, serializer: some GRPCCore.MessageSerializer, deserializer: some GRPCCore.MessageDeserializer, options: GRPCCore.CallOptions, - _ body: @Sendable @escaping (GRPCCore.ClientResponse.Single) async throws -> R + _ body: @Sendable @escaping (GRPCCore.ClientResponse) async throws -> R ) async throws -> R where R: Sendable /// A server-to-client streaming RPC. @@ -284,11 +284,11 @@ internal protocol Routeguide_RouteGuide_ClientProtocol: Sendable { /// repeated field), as the rectangle may cover a large area and contain a /// huge number of features. func listFeatures( - request: GRPCCore.ClientRequest.Single, + request: GRPCCore.ClientRequest, serializer: some GRPCCore.MessageSerializer, deserializer: some GRPCCore.MessageDeserializer, options: GRPCCore.CallOptions, - _ body: @Sendable @escaping (GRPCCore.ClientResponse.Stream) async throws -> R + _ body: @Sendable @escaping (GRPCCore.StreamingClientResponse) async throws -> R ) async throws -> R where R: Sendable /// A client-to-server streaming RPC. @@ -296,11 +296,11 @@ internal protocol Routeguide_RouteGuide_ClientProtocol: Sendable { /// Accepts a stream of Points on a route being traversed, returning a /// RouteSummary when traversal is completed. func recordRoute( - request: GRPCCore.ClientRequest.Stream, + request: GRPCCore.StreamingClientRequest, serializer: some GRPCCore.MessageSerializer, deserializer: some GRPCCore.MessageDeserializer, options: GRPCCore.CallOptions, - _ body: @Sendable @escaping (GRPCCore.ClientResponse.Single) async throws -> R + _ body: @Sendable @escaping (GRPCCore.ClientResponse) async throws -> R ) async throws -> R where R: Sendable /// A Bidirectional streaming RPC. @@ -308,20 +308,20 @@ internal protocol Routeguide_RouteGuide_ClientProtocol: Sendable { /// Accepts a stream of RouteNotes sent while a route is being traversed, /// while receiving other RouteNotes (e.g. from other users). func routeChat( - request: GRPCCore.ClientRequest.Stream, + request: GRPCCore.StreamingClientRequest, serializer: some GRPCCore.MessageSerializer, deserializer: some GRPCCore.MessageDeserializer, options: GRPCCore.CallOptions, - _ body: @Sendable @escaping (GRPCCore.ClientResponse.Stream) async throws -> R + _ body: @Sendable @escaping (GRPCCore.StreamingClientResponse) async throws -> R ) async throws -> R where R: Sendable } @available(macOS 15.0, iOS 18.0, watchOS 11.0, tvOS 18.0, visionOS 2.0, *) extension Routeguide_RouteGuide.ClientProtocol { internal func getFeature( - request: GRPCCore.ClientRequest.Single, + request: GRPCCore.ClientRequest, options: GRPCCore.CallOptions = .defaults, - _ body: @Sendable @escaping (GRPCCore.ClientResponse.Single) async throws -> R = { + _ body: @Sendable @escaping (GRPCCore.ClientResponse) async throws -> R = { try $0.message } ) async throws -> R where R: Sendable { @@ -335,9 +335,9 @@ extension Routeguide_RouteGuide.ClientProtocol { } internal func listFeatures( - request: GRPCCore.ClientRequest.Single, + request: GRPCCore.ClientRequest, options: GRPCCore.CallOptions = .defaults, - _ body: @Sendable @escaping (GRPCCore.ClientResponse.Stream) async throws -> R + _ body: @Sendable @escaping (GRPCCore.StreamingClientResponse) async throws -> R ) async throws -> R where R: Sendable { try await self.listFeatures( request: request, @@ -349,9 +349,9 @@ extension Routeguide_RouteGuide.ClientProtocol { } internal func recordRoute( - request: GRPCCore.ClientRequest.Stream, + request: GRPCCore.StreamingClientRequest, options: GRPCCore.CallOptions = .defaults, - _ body: @Sendable @escaping (GRPCCore.ClientResponse.Single) async throws -> R = { + _ body: @Sendable @escaping (GRPCCore.ClientResponse) async throws -> R = { try $0.message } ) async throws -> R where R: Sendable { @@ -365,9 +365,9 @@ extension Routeguide_RouteGuide.ClientProtocol { } internal func routeChat( - request: GRPCCore.ClientRequest.Stream, + request: GRPCCore.StreamingClientRequest, options: GRPCCore.CallOptions = .defaults, - _ body: @Sendable @escaping (GRPCCore.ClientResponse.Stream) async throws -> R + _ body: @Sendable @escaping (GRPCCore.StreamingClientResponse) async throws -> R ) async throws -> R where R: Sendable { try await self.routeChat( request: request, @@ -391,11 +391,11 @@ extension Routeguide_RouteGuide.ClientProtocol { _ message: Routeguide_Point, metadata: GRPCCore.Metadata = [:], options: GRPCCore.CallOptions = .defaults, - onResponse handleResponse: @Sendable @escaping (GRPCCore.ClientResponse.Single) async throws -> Result = { + onResponse handleResponse: @Sendable @escaping (GRPCCore.ClientResponse) async throws -> Result = { try $0.message } ) async throws -> Result where Result: Sendable { - let request = GRPCCore.ClientRequest.Single( + let request = GRPCCore.ClientRequest( message: message, metadata: metadata ) @@ -416,9 +416,9 @@ extension Routeguide_RouteGuide.ClientProtocol { _ message: Routeguide_Rectangle, metadata: GRPCCore.Metadata = [:], options: GRPCCore.CallOptions = .defaults, - onResponse handleResponse: @Sendable @escaping (GRPCCore.ClientResponse.Stream) async throws -> Result + onResponse handleResponse: @Sendable @escaping (GRPCCore.StreamingClientResponse) async throws -> Result ) async throws -> Result where Result: Sendable { - let request = GRPCCore.ClientRequest.Single( + let request = GRPCCore.ClientRequest( message: message, metadata: metadata ) @@ -437,11 +437,11 @@ extension Routeguide_RouteGuide.ClientProtocol { metadata: GRPCCore.Metadata = [:], options: GRPCCore.CallOptions = .defaults, requestProducer: @Sendable @escaping (GRPCCore.RPCWriter) async throws -> Void, - onResponse handleResponse: @Sendable @escaping (GRPCCore.ClientResponse.Single) async throws -> Result = { + onResponse handleResponse: @Sendable @escaping (GRPCCore.ClientResponse) async throws -> Result = { try $0.message } ) async throws -> Result where Result: Sendable { - let request = GRPCCore.ClientRequest.Stream( + let request = GRPCCore.StreamingClientRequest( metadata: metadata, producer: requestProducer ) @@ -460,9 +460,9 @@ extension Routeguide_RouteGuide.ClientProtocol { metadata: GRPCCore.Metadata = [:], options: GRPCCore.CallOptions = .defaults, requestProducer: @Sendable @escaping (GRPCCore.RPCWriter) async throws -> Void, - onResponse handleResponse: @Sendable @escaping (GRPCCore.ClientResponse.Stream) async throws -> Result + onResponse handleResponse: @Sendable @escaping (GRPCCore.StreamingClientResponse) async throws -> Result ) async throws -> Result where Result: Sendable { - let request = GRPCCore.ClientRequest.Stream( + let request = GRPCCore.StreamingClientRequest( metadata: metadata, producer: requestProducer ) @@ -490,11 +490,11 @@ internal struct Routeguide_RouteGuide_Client: Routeguide_RouteGuide.ClientProtoc /// A feature with an empty name is returned if there's no feature at the given /// position. internal func getFeature( - request: GRPCCore.ClientRequest.Single, + request: GRPCCore.ClientRequest, serializer: some GRPCCore.MessageSerializer, deserializer: some GRPCCore.MessageDeserializer, options: GRPCCore.CallOptions = .defaults, - _ body: @Sendable @escaping (GRPCCore.ClientResponse.Single) async throws -> R = { + _ body: @Sendable @escaping (GRPCCore.ClientResponse) async throws -> R = { try $0.message } ) async throws -> R where R: Sendable { @@ -515,11 +515,11 @@ internal struct Routeguide_RouteGuide_Client: Routeguide_RouteGuide.ClientProtoc /// repeated field), as the rectangle may cover a large area and contain a /// huge number of features. internal func listFeatures( - request: GRPCCore.ClientRequest.Single, + request: GRPCCore.ClientRequest, serializer: some GRPCCore.MessageSerializer, deserializer: some GRPCCore.MessageDeserializer, options: GRPCCore.CallOptions = .defaults, - _ body: @Sendable @escaping (GRPCCore.ClientResponse.Stream) async throws -> R + _ body: @Sendable @escaping (GRPCCore.StreamingClientResponse) async throws -> R ) async throws -> R where R: Sendable { try await self.client.serverStreaming( request: request, @@ -536,11 +536,11 @@ internal struct Routeguide_RouteGuide_Client: Routeguide_RouteGuide.ClientProtoc /// Accepts a stream of Points on a route being traversed, returning a /// RouteSummary when traversal is completed. internal func recordRoute( - request: GRPCCore.ClientRequest.Stream, + request: GRPCCore.StreamingClientRequest, serializer: some GRPCCore.MessageSerializer, deserializer: some GRPCCore.MessageDeserializer, options: GRPCCore.CallOptions = .defaults, - _ body: @Sendable @escaping (GRPCCore.ClientResponse.Single) async throws -> R = { + _ body: @Sendable @escaping (GRPCCore.ClientResponse) async throws -> R = { try $0.message } ) async throws -> R where R: Sendable { @@ -559,11 +559,11 @@ internal struct Routeguide_RouteGuide_Client: Routeguide_RouteGuide.ClientProtoc /// Accepts a stream of RouteNotes sent while a route is being traversed, /// while receiving other RouteNotes (e.g. from other users). internal func routeChat( - request: GRPCCore.ClientRequest.Stream, + request: GRPCCore.StreamingClientRequest, serializer: some GRPCCore.MessageSerializer, deserializer: some GRPCCore.MessageDeserializer, options: GRPCCore.CallOptions = .defaults, - _ body: @Sendable @escaping (GRPCCore.ClientResponse.Stream) async throws -> R + _ body: @Sendable @escaping (GRPCCore.StreamingClientResponse) async throws -> R ) async throws -> R where R: Sendable { try await self.client.bidirectionalStreaming( request: request, diff --git a/Examples/route-guide/Sources/Subcommands/Serve.swift b/Examples/route-guide/Sources/Subcommands/Serve.swift index 5bfdc200e..c799b4fb7 100644 --- a/Examples/route-guide/Sources/Subcommands/Serve.swift +++ b/Examples/route-guide/Sources/Subcommands/Serve.swift @@ -100,16 +100,16 @@ struct RouteGuideService { extension RouteGuideService: Routeguide_RouteGuide.ServiceProtocol { func getFeature( - request: ServerRequest.Single, + request: ServerRequest, context: ServerContext - ) async throws -> ServerResponse.Single { + ) async throws -> ServerResponse { let feature = self.findFeature( latitude: request.message.latitude, longitude: request.message.longitude ) if let feature { - return ServerResponse.Single(message: feature) + return ServerResponse(message: feature) } else { // No feature: return a feature with an empty name. let unknownFeature = Routeguide_Feature.with { @@ -119,15 +119,15 @@ extension RouteGuideService: Routeguide_RouteGuide.ServiceProtocol { $0.longitude = request.message.longitude } } - return ServerResponse.Single(message: unknownFeature) + return ServerResponse(message: unknownFeature) } } func listFeatures( - request: ServerRequest.Single, + request: ServerRequest, context: ServerContext - ) async throws -> ServerResponse.Stream { - return ServerResponse.Stream { writer in + ) async throws -> StreamingServerResponse { + return StreamingServerResponse { writer in let featuresWithinBounds = self.features.filter { feature in !feature.name.isEmpty && feature.isContained(by: request.message) } @@ -138,9 +138,9 @@ extension RouteGuideService: Routeguide_RouteGuide.ServiceProtocol { } func recordRoute( - request: ServerRequest.Stream, + request: StreamingServerRequest, context: ServerContext - ) async throws -> ServerResponse.Single { + ) async throws -> ServerResponse { let startTime = ContinuousClock.now var pointsVisited = 0 var featuresVisited = 0 @@ -169,14 +169,14 @@ extension RouteGuideService: Routeguide_RouteGuide.ServiceProtocol { $0.distance = Int32(distanceTravelled) } - return ServerResponse.Single(message: summary) + return ServerResponse(message: summary) } func routeChat( - request: ServerRequest.Stream, + request: StreamingServerRequest, context: ServerContext - ) async throws -> ServerResponse.Stream { - return ServerResponse.Stream { writer in + ) async throws -> StreamingServerResponse { + return StreamingServerResponse { writer in for try await note in request.messages { let notes = self.receivedNotes.recordNote(note) try await writer.write(contentsOf: notes)