@@ -40,7 +40,7 @@ struct Serve: AsyncParsableCommand {
4040 let features = try self . loadFeatures ( )
4141 let transport = HTTP2ServerTransport . Posix (
4242 address: . ipv4( host: " 127.0.0.1 " , port: self . port) ,
43- config : . defaults ( transportSecurity: . plaintext)
43+ transportSecurity: . plaintext
4444 )
4545
4646 let server = GRPCServer ( transport: transport, services: [ RouteGuideService ( features: features) ] )
@@ -99,56 +99,54 @@ struct RouteGuideService {
9999 }
100100}
101101
102- extension RouteGuideService : Routeguide_RouteGuide . ServiceProtocol {
102+ extension RouteGuideService : Routeguide_RouteGuide . SimpleServiceProtocol {
103103 func getFeature(
104- request: ServerRequest < Routeguide_Point > ,
104+ request: Routeguide_Point ,
105105 context: ServerContext
106- ) async throws -> ServerResponse < Routeguide_Feature > {
106+ ) async throws -> Routeguide_Feature {
107107 let feature = self . findFeature (
108- latitude: request. message . latitude,
109- longitude: request. message . longitude
108+ latitude: request. latitude,
109+ longitude: request. longitude
110110 )
111111
112112 if let feature {
113- return ServerResponse ( message : feature)
113+ return feature
114114 } else {
115115 // No feature: return a feature with an empty name.
116116 let unknownFeature = Routeguide_Feature . with {
117117 $0. name = " "
118118 $0. location = . with {
119- $0. latitude = request. message . latitude
120- $0. longitude = request. message . longitude
119+ $0. latitude = request. latitude
120+ $0. longitude = request. longitude
121121 }
122122 }
123- return ServerResponse ( message : unknownFeature)
123+ return unknownFeature
124124 }
125125 }
126126
127127 func listFeatures(
128- request: ServerRequest < Routeguide_Rectangle > ,
128+ request: Routeguide_Rectangle ,
129+ response: RPCWriter < Routeguide_Feature > ,
129130 context: ServerContext
130- ) async throws -> StreamingServerResponse < Routeguide_Feature > {
131- return StreamingServerResponse { writer in
132- let featuresWithinBounds = self . features. filter { feature in
133- !feature. name. isEmpty && feature. isContained ( by: request. message)
134- }
135-
136- try await writer. write ( contentsOf: featuresWithinBounds)
137- return [ : ]
131+ ) async throws {
132+ let featuresWithinBounds = self . features. filter { feature in
133+ !feature. name. isEmpty && feature. isContained ( by: request)
138134 }
135+
136+ try await response. write ( contentsOf: featuresWithinBounds)
139137 }
140138
141139 func recordRoute(
142- request: StreamingServerRequest < Routeguide_Point > ,
140+ request: RPCAsyncSequence < Routeguide_Point , any Error > ,
143141 context: ServerContext
144- ) async throws -> ServerResponse < Routeguide_RouteSummary > {
142+ ) async throws -> Routeguide_RouteSummary {
145143 let startTime = ContinuousClock . now
146144 var pointsVisited = 0
147145 var featuresVisited = 0
148146 var distanceTravelled = 0.0
149147 var previousPoint : Routeguide_Point ? = nil
150148
151- for try await point in request. messages {
149+ for try await point in request {
152150 pointsVisited += 1
153151
154152 if self . findFeature ( latitude: point. latitude, longitude: point. longitude) != nil {
@@ -170,19 +168,17 @@ extension RouteGuideService: Routeguide_RouteGuide.ServiceProtocol {
170168 $0. distance = Int32 ( distanceTravelled)
171169 }
172170
173- return ServerResponse ( message : summary)
171+ return summary
174172 }
175173
176174 func routeChat(
177- request: StreamingServerRequest < Routeguide_RouteNote > ,
175+ request: RPCAsyncSequence < Routeguide_RouteNote , any Error > ,
176+ response: RPCWriter < Routeguide_RouteNote > ,
178177 context: ServerContext
179- ) async throws -> StreamingServerResponse < Routeguide_RouteNote > {
180- return StreamingServerResponse { writer in
181- for try await note in request. messages {
182- let notes = self . receivedNotes. recordNote ( note)
183- try await writer. write ( contentsOf: notes)
184- }
185- return [ : ]
178+ ) async throws {
179+ for try await note in request {
180+ let notes = self . receivedNotes. recordNote ( note)
181+ try await response. write ( contentsOf: notes)
186182 }
187183 }
188184}
0 commit comments