route_guide.grpc.swift 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706
  1. //
  2. // DO NOT EDIT.
  3. //
  4. // Generated by the protocol buffer compiler.
  5. // Source: route_guide.proto
  6. //
  7. //
  8. // Copyright 2018, gRPC Authors All rights reserved.
  9. //
  10. // Licensed under the Apache License, Version 2.0 (the "License");
  11. // you may not use this file except in compliance with the License.
  12. // You may obtain a copy of the License at
  13. //
  14. // http://www.apache.org/licenses/LICENSE-2.0
  15. //
  16. // Unless required by applicable law or agreed to in writing, software
  17. // distributed under the License is distributed on an "AS IS" BASIS,
  18. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  19. // See the License for the specific language governing permissions and
  20. // limitations under the License.
  21. //
  22. import GRPC
  23. import NIO
  24. import NIOConcurrencyHelpers
  25. import SwiftProtobuf
  26. /// Interface exported by the server.
  27. ///
  28. /// Usage: instantiate `Routeguide_RouteGuideClient`, then call methods of this protocol to make API calls.
  29. public protocol Routeguide_RouteGuideClientProtocol: GRPCClient {
  30. var serviceName: String { get }
  31. var interceptors: Routeguide_RouteGuideClientInterceptorFactoryProtocol? { get }
  32. func getFeature(
  33. _ request: Routeguide_Point,
  34. callOptions: CallOptions?
  35. ) -> UnaryCall<Routeguide_Point, Routeguide_Feature>
  36. func listFeatures(
  37. _ request: Routeguide_Rectangle,
  38. callOptions: CallOptions?,
  39. handler: @escaping (Routeguide_Feature) -> Void
  40. ) -> ServerStreamingCall<Routeguide_Rectangle, Routeguide_Feature>
  41. func recordRoute(
  42. callOptions: CallOptions?
  43. ) -> ClientStreamingCall<Routeguide_Point, Routeguide_RouteSummary>
  44. func routeChat(
  45. callOptions: CallOptions?,
  46. handler: @escaping (Routeguide_RouteNote) -> Void
  47. ) -> BidirectionalStreamingCall<Routeguide_RouteNote, Routeguide_RouteNote>
  48. }
  49. extension Routeguide_RouteGuideClientProtocol {
  50. public var serviceName: String {
  51. return "routeguide.RouteGuide"
  52. }
  53. /// A simple RPC.
  54. ///
  55. /// Obtains the feature at a given position.
  56. ///
  57. /// A feature with an empty name is returned if there's no feature at the given
  58. /// position.
  59. ///
  60. /// - Parameters:
  61. /// - request: Request to send to GetFeature.
  62. /// - callOptions: Call options.
  63. /// - Returns: A `UnaryCall` with futures for the metadata, status and response.
  64. public func getFeature(
  65. _ request: Routeguide_Point,
  66. callOptions: CallOptions? = nil
  67. ) -> UnaryCall<Routeguide_Point, Routeguide_Feature> {
  68. return self.makeUnaryCall(
  69. path: Routeguide_RouteGuideClientMetadata.Methods.getFeature.path,
  70. request: request,
  71. callOptions: callOptions ?? self.defaultCallOptions,
  72. interceptors: self.interceptors?.makeGetFeatureInterceptors() ?? []
  73. )
  74. }
  75. /// A server-to-client streaming RPC.
  76. ///
  77. /// Obtains the Features available within the given Rectangle. Results are
  78. /// streamed rather than returned at once (e.g. in a response message with a
  79. /// repeated field), as the rectangle may cover a large area and contain a
  80. /// huge number of features.
  81. ///
  82. /// - Parameters:
  83. /// - request: Request to send to ListFeatures.
  84. /// - callOptions: Call options.
  85. /// - handler: A closure called when each response is received from the server.
  86. /// - Returns: A `ServerStreamingCall` with futures for the metadata and status.
  87. public func listFeatures(
  88. _ request: Routeguide_Rectangle,
  89. callOptions: CallOptions? = nil,
  90. handler: @escaping (Routeguide_Feature) -> Void
  91. ) -> ServerStreamingCall<Routeguide_Rectangle, Routeguide_Feature> {
  92. return self.makeServerStreamingCall(
  93. path: Routeguide_RouteGuideClientMetadata.Methods.listFeatures.path,
  94. request: request,
  95. callOptions: callOptions ?? self.defaultCallOptions,
  96. interceptors: self.interceptors?.makeListFeaturesInterceptors() ?? [],
  97. handler: handler
  98. )
  99. }
  100. /// A client-to-server streaming RPC.
  101. ///
  102. /// Accepts a stream of Points on a route being traversed, returning a
  103. /// RouteSummary when traversal is completed.
  104. ///
  105. /// Callers should use the `send` method on the returned object to send messages
  106. /// to the server. The caller should send an `.end` after the final message has been sent.
  107. ///
  108. /// - Parameters:
  109. /// - callOptions: Call options.
  110. /// - Returns: A `ClientStreamingCall` with futures for the metadata, status and response.
  111. public func recordRoute(
  112. callOptions: CallOptions? = nil
  113. ) -> ClientStreamingCall<Routeguide_Point, Routeguide_RouteSummary> {
  114. return self.makeClientStreamingCall(
  115. path: Routeguide_RouteGuideClientMetadata.Methods.recordRoute.path,
  116. callOptions: callOptions ?? self.defaultCallOptions,
  117. interceptors: self.interceptors?.makeRecordRouteInterceptors() ?? []
  118. )
  119. }
  120. /// A Bidirectional streaming RPC.
  121. ///
  122. /// Accepts a stream of RouteNotes sent while a route is being traversed,
  123. /// while receiving other RouteNotes (e.g. from other users).
  124. ///
  125. /// Callers should use the `send` method on the returned object to send messages
  126. /// to the server. The caller should send an `.end` after the final message has been sent.
  127. ///
  128. /// - Parameters:
  129. /// - callOptions: Call options.
  130. /// - handler: A closure called when each response is received from the server.
  131. /// - Returns: A `ClientStreamingCall` with futures for the metadata and status.
  132. public func routeChat(
  133. callOptions: CallOptions? = nil,
  134. handler: @escaping (Routeguide_RouteNote) -> Void
  135. ) -> BidirectionalStreamingCall<Routeguide_RouteNote, Routeguide_RouteNote> {
  136. return self.makeBidirectionalStreamingCall(
  137. path: Routeguide_RouteGuideClientMetadata.Methods.routeChat.path,
  138. callOptions: callOptions ?? self.defaultCallOptions,
  139. interceptors: self.interceptors?.makeRouteChatInterceptors() ?? [],
  140. handler: handler
  141. )
  142. }
  143. }
  144. #if compiler(>=5.6)
  145. @available(*, deprecated)
  146. extension Routeguide_RouteGuideClient: @unchecked Sendable {}
  147. #endif // compiler(>=5.6)
  148. @available(*, deprecated, renamed: "Routeguide_RouteGuideNIOClient")
  149. public final class Routeguide_RouteGuideClient: Routeguide_RouteGuideClientProtocol {
  150. private let lock = Lock()
  151. private var _defaultCallOptions: CallOptions
  152. private var _interceptors: Routeguide_RouteGuideClientInterceptorFactoryProtocol?
  153. public let channel: GRPCChannel
  154. public var defaultCallOptions: CallOptions {
  155. get { self.lock.withLock { return self._defaultCallOptions } }
  156. set { self.lock.withLockVoid { self._defaultCallOptions = newValue } }
  157. }
  158. public var interceptors: Routeguide_RouteGuideClientInterceptorFactoryProtocol? {
  159. get { self.lock.withLock { return self._interceptors } }
  160. set { self.lock.withLockVoid { self._interceptors = newValue } }
  161. }
  162. /// Creates a client for the routeguide.RouteGuide service.
  163. ///
  164. /// - Parameters:
  165. /// - channel: `GRPCChannel` to the service host.
  166. /// - defaultCallOptions: Options to use for each service call if the user doesn't provide them.
  167. /// - interceptors: A factory providing interceptors for each RPC.
  168. public init(
  169. channel: GRPCChannel,
  170. defaultCallOptions: CallOptions = CallOptions(),
  171. interceptors: Routeguide_RouteGuideClientInterceptorFactoryProtocol? = nil
  172. ) {
  173. self.channel = channel
  174. self._defaultCallOptions = defaultCallOptions
  175. self._interceptors = interceptors
  176. }
  177. }
  178. public struct Routeguide_RouteGuideNIOClient: Routeguide_RouteGuideClientProtocol {
  179. public var channel: GRPCChannel
  180. public var defaultCallOptions: CallOptions
  181. public var interceptors: Routeguide_RouteGuideClientInterceptorFactoryProtocol?
  182. /// Creates a client for the routeguide.RouteGuide service.
  183. ///
  184. /// - Parameters:
  185. /// - channel: `GRPCChannel` to the service host.
  186. /// - defaultCallOptions: Options to use for each service call if the user doesn't provide them.
  187. /// - interceptors: A factory providing interceptors for each RPC.
  188. public init(
  189. channel: GRPCChannel,
  190. defaultCallOptions: CallOptions = CallOptions(),
  191. interceptors: Routeguide_RouteGuideClientInterceptorFactoryProtocol? = nil
  192. ) {
  193. self.channel = channel
  194. self.defaultCallOptions = defaultCallOptions
  195. self.interceptors = interceptors
  196. }
  197. }
  198. #if compiler(>=5.6)
  199. /// Interface exported by the server.
  200. @available(macOS 10.15, iOS 13, tvOS 13, watchOS 6, *)
  201. public protocol Routeguide_RouteGuideAsyncClientProtocol: GRPCClient {
  202. static var serviceDescriptor: GRPCServiceDescriptor { get }
  203. var interceptors: Routeguide_RouteGuideClientInterceptorFactoryProtocol? { get }
  204. func makeGetFeatureCall(
  205. _ request: Routeguide_Point,
  206. callOptions: CallOptions?
  207. ) -> GRPCAsyncUnaryCall<Routeguide_Point, Routeguide_Feature>
  208. func makeListFeaturesCall(
  209. _ request: Routeguide_Rectangle,
  210. callOptions: CallOptions?
  211. ) -> GRPCAsyncServerStreamingCall<Routeguide_Rectangle, Routeguide_Feature>
  212. func makeRecordRouteCall(
  213. callOptions: CallOptions?
  214. ) -> GRPCAsyncClientStreamingCall<Routeguide_Point, Routeguide_RouteSummary>
  215. func makeRouteChatCall(
  216. callOptions: CallOptions?
  217. ) -> GRPCAsyncBidirectionalStreamingCall<Routeguide_RouteNote, Routeguide_RouteNote>
  218. }
  219. @available(macOS 10.15, iOS 13, tvOS 13, watchOS 6, *)
  220. extension Routeguide_RouteGuideAsyncClientProtocol {
  221. public static var serviceDescriptor: GRPCServiceDescriptor {
  222. return Routeguide_RouteGuideClientMetadata.serviceDescriptor
  223. }
  224. public var interceptors: Routeguide_RouteGuideClientInterceptorFactoryProtocol? {
  225. return nil
  226. }
  227. public func makeGetFeatureCall(
  228. _ request: Routeguide_Point,
  229. callOptions: CallOptions? = nil
  230. ) -> GRPCAsyncUnaryCall<Routeguide_Point, Routeguide_Feature> {
  231. return self.makeAsyncUnaryCall(
  232. path: Routeguide_RouteGuideClientMetadata.Methods.getFeature.path,
  233. request: request,
  234. callOptions: callOptions ?? self.defaultCallOptions,
  235. interceptors: self.interceptors?.makeGetFeatureInterceptors() ?? []
  236. )
  237. }
  238. public func makeListFeaturesCall(
  239. _ request: Routeguide_Rectangle,
  240. callOptions: CallOptions? = nil
  241. ) -> GRPCAsyncServerStreamingCall<Routeguide_Rectangle, Routeguide_Feature> {
  242. return self.makeAsyncServerStreamingCall(
  243. path: Routeguide_RouteGuideClientMetadata.Methods.listFeatures.path,
  244. request: request,
  245. callOptions: callOptions ?? self.defaultCallOptions,
  246. interceptors: self.interceptors?.makeListFeaturesInterceptors() ?? []
  247. )
  248. }
  249. public func makeRecordRouteCall(
  250. callOptions: CallOptions? = nil
  251. ) -> GRPCAsyncClientStreamingCall<Routeguide_Point, Routeguide_RouteSummary> {
  252. return self.makeAsyncClientStreamingCall(
  253. path: Routeguide_RouteGuideClientMetadata.Methods.recordRoute.path,
  254. callOptions: callOptions ?? self.defaultCallOptions,
  255. interceptors: self.interceptors?.makeRecordRouteInterceptors() ?? []
  256. )
  257. }
  258. public func makeRouteChatCall(
  259. callOptions: CallOptions? = nil
  260. ) -> GRPCAsyncBidirectionalStreamingCall<Routeguide_RouteNote, Routeguide_RouteNote> {
  261. return self.makeAsyncBidirectionalStreamingCall(
  262. path: Routeguide_RouteGuideClientMetadata.Methods.routeChat.path,
  263. callOptions: callOptions ?? self.defaultCallOptions,
  264. interceptors: self.interceptors?.makeRouteChatInterceptors() ?? []
  265. )
  266. }
  267. }
  268. @available(macOS 10.15, iOS 13, tvOS 13, watchOS 6, *)
  269. extension Routeguide_RouteGuideAsyncClientProtocol {
  270. public func getFeature(
  271. _ request: Routeguide_Point,
  272. callOptions: CallOptions? = nil
  273. ) async throws -> Routeguide_Feature {
  274. return try await self.performAsyncUnaryCall(
  275. path: Routeguide_RouteGuideClientMetadata.Methods.getFeature.path,
  276. request: request,
  277. callOptions: callOptions ?? self.defaultCallOptions,
  278. interceptors: self.interceptors?.makeGetFeatureInterceptors() ?? []
  279. )
  280. }
  281. public func listFeatures(
  282. _ request: Routeguide_Rectangle,
  283. callOptions: CallOptions? = nil
  284. ) -> GRPCAsyncResponseStream<Routeguide_Feature> {
  285. return self.performAsyncServerStreamingCall(
  286. path: Routeguide_RouteGuideClientMetadata.Methods.listFeatures.path,
  287. request: request,
  288. callOptions: callOptions ?? self.defaultCallOptions,
  289. interceptors: self.interceptors?.makeListFeaturesInterceptors() ?? []
  290. )
  291. }
  292. public func recordRoute<RequestStream>(
  293. _ requests: RequestStream,
  294. callOptions: CallOptions? = nil
  295. ) async throws -> Routeguide_RouteSummary where RequestStream: Sequence, RequestStream.Element == Routeguide_Point {
  296. return try await self.performAsyncClientStreamingCall(
  297. path: Routeguide_RouteGuideClientMetadata.Methods.recordRoute.path,
  298. requests: requests,
  299. callOptions: callOptions ?? self.defaultCallOptions,
  300. interceptors: self.interceptors?.makeRecordRouteInterceptors() ?? []
  301. )
  302. }
  303. public func recordRoute<RequestStream>(
  304. _ requests: RequestStream,
  305. callOptions: CallOptions? = nil
  306. ) async throws -> Routeguide_RouteSummary where RequestStream: AsyncSequence & Sendable, RequestStream.Element == Routeguide_Point {
  307. return try await self.performAsyncClientStreamingCall(
  308. path: Routeguide_RouteGuideClientMetadata.Methods.recordRoute.path,
  309. requests: requests,
  310. callOptions: callOptions ?? self.defaultCallOptions,
  311. interceptors: self.interceptors?.makeRecordRouteInterceptors() ?? []
  312. )
  313. }
  314. public func routeChat<RequestStream>(
  315. _ requests: RequestStream,
  316. callOptions: CallOptions? = nil
  317. ) -> GRPCAsyncResponseStream<Routeguide_RouteNote> where RequestStream: Sequence, RequestStream.Element == Routeguide_RouteNote {
  318. return self.performAsyncBidirectionalStreamingCall(
  319. path: Routeguide_RouteGuideClientMetadata.Methods.routeChat.path,
  320. requests: requests,
  321. callOptions: callOptions ?? self.defaultCallOptions,
  322. interceptors: self.interceptors?.makeRouteChatInterceptors() ?? []
  323. )
  324. }
  325. public func routeChat<RequestStream>(
  326. _ requests: RequestStream,
  327. callOptions: CallOptions? = nil
  328. ) -> GRPCAsyncResponseStream<Routeguide_RouteNote> where RequestStream: AsyncSequence & Sendable, RequestStream.Element == Routeguide_RouteNote {
  329. return self.performAsyncBidirectionalStreamingCall(
  330. path: Routeguide_RouteGuideClientMetadata.Methods.routeChat.path,
  331. requests: requests,
  332. callOptions: callOptions ?? self.defaultCallOptions,
  333. interceptors: self.interceptors?.makeRouteChatInterceptors() ?? []
  334. )
  335. }
  336. }
  337. @available(macOS 10.15, iOS 13, tvOS 13, watchOS 6, *)
  338. public struct Routeguide_RouteGuideAsyncClient: Routeguide_RouteGuideAsyncClientProtocol {
  339. public var channel: GRPCChannel
  340. public var defaultCallOptions: CallOptions
  341. public var interceptors: Routeguide_RouteGuideClientInterceptorFactoryProtocol?
  342. public init(
  343. channel: GRPCChannel,
  344. defaultCallOptions: CallOptions = CallOptions(),
  345. interceptors: Routeguide_RouteGuideClientInterceptorFactoryProtocol? = nil
  346. ) {
  347. self.channel = channel
  348. self.defaultCallOptions = defaultCallOptions
  349. self.interceptors = interceptors
  350. }
  351. }
  352. #endif // compiler(>=5.6)
  353. public protocol Routeguide_RouteGuideClientInterceptorFactoryProtocol: GRPCSendable {
  354. /// - Returns: Interceptors to use when invoking 'getFeature'.
  355. func makeGetFeatureInterceptors() -> [ClientInterceptor<Routeguide_Point, Routeguide_Feature>]
  356. /// - Returns: Interceptors to use when invoking 'listFeatures'.
  357. func makeListFeaturesInterceptors() -> [ClientInterceptor<Routeguide_Rectangle, Routeguide_Feature>]
  358. /// - Returns: Interceptors to use when invoking 'recordRoute'.
  359. func makeRecordRouteInterceptors() -> [ClientInterceptor<Routeguide_Point, Routeguide_RouteSummary>]
  360. /// - Returns: Interceptors to use when invoking 'routeChat'.
  361. func makeRouteChatInterceptors() -> [ClientInterceptor<Routeguide_RouteNote, Routeguide_RouteNote>]
  362. }
  363. public enum Routeguide_RouteGuideClientMetadata {
  364. public static let serviceDescriptor = GRPCServiceDescriptor(
  365. name: "RouteGuide",
  366. fullName: "routeguide.RouteGuide",
  367. methods: [
  368. Routeguide_RouteGuideClientMetadata.Methods.getFeature,
  369. Routeguide_RouteGuideClientMetadata.Methods.listFeatures,
  370. Routeguide_RouteGuideClientMetadata.Methods.recordRoute,
  371. Routeguide_RouteGuideClientMetadata.Methods.routeChat,
  372. ]
  373. )
  374. public enum Methods {
  375. public static let getFeature = GRPCMethodDescriptor(
  376. name: "GetFeature",
  377. path: "/routeguide.RouteGuide/GetFeature",
  378. type: GRPCCallType.unary
  379. )
  380. public static let listFeatures = GRPCMethodDescriptor(
  381. name: "ListFeatures",
  382. path: "/routeguide.RouteGuide/ListFeatures",
  383. type: GRPCCallType.serverStreaming
  384. )
  385. public static let recordRoute = GRPCMethodDescriptor(
  386. name: "RecordRoute",
  387. path: "/routeguide.RouteGuide/RecordRoute",
  388. type: GRPCCallType.clientStreaming
  389. )
  390. public static let routeChat = GRPCMethodDescriptor(
  391. name: "RouteChat",
  392. path: "/routeguide.RouteGuide/RouteChat",
  393. type: GRPCCallType.bidirectionalStreaming
  394. )
  395. }
  396. }
  397. /// Interface exported by the server.
  398. ///
  399. /// To build a server, implement a class that conforms to this protocol.
  400. public protocol Routeguide_RouteGuideProvider: CallHandlerProvider {
  401. var interceptors: Routeguide_RouteGuideServerInterceptorFactoryProtocol? { get }
  402. /// A simple RPC.
  403. ///
  404. /// Obtains the feature at a given position.
  405. ///
  406. /// A feature with an empty name is returned if there's no feature at the given
  407. /// position.
  408. func getFeature(request: Routeguide_Point, context: StatusOnlyCallContext) -> EventLoopFuture<Routeguide_Feature>
  409. /// A server-to-client streaming RPC.
  410. ///
  411. /// Obtains the Features available within the given Rectangle. Results are
  412. /// streamed rather than returned at once (e.g. in a response message with a
  413. /// repeated field), as the rectangle may cover a large area and contain a
  414. /// huge number of features.
  415. func listFeatures(request: Routeguide_Rectangle, context: StreamingResponseCallContext<Routeguide_Feature>) -> EventLoopFuture<GRPCStatus>
  416. /// A client-to-server streaming RPC.
  417. ///
  418. /// Accepts a stream of Points on a route being traversed, returning a
  419. /// RouteSummary when traversal is completed.
  420. func recordRoute(context: UnaryResponseCallContext<Routeguide_RouteSummary>) -> EventLoopFuture<(StreamEvent<Routeguide_Point>) -> Void>
  421. /// A Bidirectional streaming RPC.
  422. ///
  423. /// Accepts a stream of RouteNotes sent while a route is being traversed,
  424. /// while receiving other RouteNotes (e.g. from other users).
  425. func routeChat(context: StreamingResponseCallContext<Routeguide_RouteNote>) -> EventLoopFuture<(StreamEvent<Routeguide_RouteNote>) -> Void>
  426. }
  427. extension Routeguide_RouteGuideProvider {
  428. public var serviceName: Substring {
  429. return Routeguide_RouteGuideServerMetadata.serviceDescriptor.fullName[...]
  430. }
  431. /// Determines, calls and returns the appropriate request handler, depending on the request's method.
  432. /// Returns nil for methods not handled by this service.
  433. public func handle(
  434. method name: Substring,
  435. context: CallHandlerContext
  436. ) -> GRPCServerHandlerProtocol? {
  437. switch name {
  438. case "GetFeature":
  439. return UnaryServerHandler(
  440. context: context,
  441. requestDeserializer: ProtobufDeserializer<Routeguide_Point>(),
  442. responseSerializer: ProtobufSerializer<Routeguide_Feature>(),
  443. interceptors: self.interceptors?.makeGetFeatureInterceptors() ?? [],
  444. userFunction: self.getFeature(request:context:)
  445. )
  446. case "ListFeatures":
  447. return ServerStreamingServerHandler(
  448. context: context,
  449. requestDeserializer: ProtobufDeserializer<Routeguide_Rectangle>(),
  450. responseSerializer: ProtobufSerializer<Routeguide_Feature>(),
  451. interceptors: self.interceptors?.makeListFeaturesInterceptors() ?? [],
  452. userFunction: self.listFeatures(request:context:)
  453. )
  454. case "RecordRoute":
  455. return ClientStreamingServerHandler(
  456. context: context,
  457. requestDeserializer: ProtobufDeserializer<Routeguide_Point>(),
  458. responseSerializer: ProtobufSerializer<Routeguide_RouteSummary>(),
  459. interceptors: self.interceptors?.makeRecordRouteInterceptors() ?? [],
  460. observerFactory: self.recordRoute(context:)
  461. )
  462. case "RouteChat":
  463. return BidirectionalStreamingServerHandler(
  464. context: context,
  465. requestDeserializer: ProtobufDeserializer<Routeguide_RouteNote>(),
  466. responseSerializer: ProtobufSerializer<Routeguide_RouteNote>(),
  467. interceptors: self.interceptors?.makeRouteChatInterceptors() ?? [],
  468. observerFactory: self.routeChat(context:)
  469. )
  470. default:
  471. return nil
  472. }
  473. }
  474. }
  475. #if compiler(>=5.6)
  476. /// Interface exported by the server.
  477. ///
  478. /// To implement a server, implement an object which conforms to this protocol.
  479. @available(macOS 10.15, iOS 13, tvOS 13, watchOS 6, *)
  480. public protocol Routeguide_RouteGuideAsyncProvider: CallHandlerProvider {
  481. static var serviceDescriptor: GRPCServiceDescriptor { get }
  482. var interceptors: Routeguide_RouteGuideServerInterceptorFactoryProtocol? { get }
  483. /// A simple RPC.
  484. ///
  485. /// Obtains the feature at a given position.
  486. ///
  487. /// A feature with an empty name is returned if there's no feature at the given
  488. /// position.
  489. @Sendable func getFeature(
  490. request: Routeguide_Point,
  491. context: GRPCAsyncServerCallContext
  492. ) async throws -> Routeguide_Feature
  493. /// A server-to-client streaming RPC.
  494. ///
  495. /// Obtains the Features available within the given Rectangle. Results are
  496. /// streamed rather than returned at once (e.g. in a response message with a
  497. /// repeated field), as the rectangle may cover a large area and contain a
  498. /// huge number of features.
  499. @Sendable func listFeatures(
  500. request: Routeguide_Rectangle,
  501. responseStream: GRPCAsyncResponseStreamWriter<Routeguide_Feature>,
  502. context: GRPCAsyncServerCallContext
  503. ) async throws
  504. /// A client-to-server streaming RPC.
  505. ///
  506. /// Accepts a stream of Points on a route being traversed, returning a
  507. /// RouteSummary when traversal is completed.
  508. @Sendable func recordRoute(
  509. requestStream: GRPCAsyncRequestStream<Routeguide_Point>,
  510. context: GRPCAsyncServerCallContext
  511. ) async throws -> Routeguide_RouteSummary
  512. /// A Bidirectional streaming RPC.
  513. ///
  514. /// Accepts a stream of RouteNotes sent while a route is being traversed,
  515. /// while receiving other RouteNotes (e.g. from other users).
  516. @Sendable func routeChat(
  517. requestStream: GRPCAsyncRequestStream<Routeguide_RouteNote>,
  518. responseStream: GRPCAsyncResponseStreamWriter<Routeguide_RouteNote>,
  519. context: GRPCAsyncServerCallContext
  520. ) async throws
  521. }
  522. @available(macOS 10.15, iOS 13, tvOS 13, watchOS 6, *)
  523. extension Routeguide_RouteGuideAsyncProvider {
  524. public static var serviceDescriptor: GRPCServiceDescriptor {
  525. return Routeguide_RouteGuideServerMetadata.serviceDescriptor
  526. }
  527. public var serviceName: Substring {
  528. return Routeguide_RouteGuideServerMetadata.serviceDescriptor.fullName[...]
  529. }
  530. public var interceptors: Routeguide_RouteGuideServerInterceptorFactoryProtocol? {
  531. return nil
  532. }
  533. public func handle(
  534. method name: Substring,
  535. context: CallHandlerContext
  536. ) -> GRPCServerHandlerProtocol? {
  537. switch name {
  538. case "GetFeature":
  539. return GRPCAsyncServerHandler(
  540. context: context,
  541. requestDeserializer: ProtobufDeserializer<Routeguide_Point>(),
  542. responseSerializer: ProtobufSerializer<Routeguide_Feature>(),
  543. interceptors: self.interceptors?.makeGetFeatureInterceptors() ?? [],
  544. wrapping: self.getFeature(request:context:)
  545. )
  546. case "ListFeatures":
  547. return GRPCAsyncServerHandler(
  548. context: context,
  549. requestDeserializer: ProtobufDeserializer<Routeguide_Rectangle>(),
  550. responseSerializer: ProtobufSerializer<Routeguide_Feature>(),
  551. interceptors: self.interceptors?.makeListFeaturesInterceptors() ?? [],
  552. wrapping: self.listFeatures(request:responseStream:context:)
  553. )
  554. case "RecordRoute":
  555. return GRPCAsyncServerHandler(
  556. context: context,
  557. requestDeserializer: ProtobufDeserializer<Routeguide_Point>(),
  558. responseSerializer: ProtobufSerializer<Routeguide_RouteSummary>(),
  559. interceptors: self.interceptors?.makeRecordRouteInterceptors() ?? [],
  560. wrapping: self.recordRoute(requestStream:context:)
  561. )
  562. case "RouteChat":
  563. return GRPCAsyncServerHandler(
  564. context: context,
  565. requestDeserializer: ProtobufDeserializer<Routeguide_RouteNote>(),
  566. responseSerializer: ProtobufSerializer<Routeguide_RouteNote>(),
  567. interceptors: self.interceptors?.makeRouteChatInterceptors() ?? [],
  568. wrapping: self.routeChat(requestStream:responseStream:context:)
  569. )
  570. default:
  571. return nil
  572. }
  573. }
  574. }
  575. #endif // compiler(>=5.6)
  576. public protocol Routeguide_RouteGuideServerInterceptorFactoryProtocol {
  577. /// - Returns: Interceptors to use when handling 'getFeature'.
  578. /// Defaults to calling `self.makeInterceptors()`.
  579. func makeGetFeatureInterceptors() -> [ServerInterceptor<Routeguide_Point, Routeguide_Feature>]
  580. /// - Returns: Interceptors to use when handling 'listFeatures'.
  581. /// Defaults to calling `self.makeInterceptors()`.
  582. func makeListFeaturesInterceptors() -> [ServerInterceptor<Routeguide_Rectangle, Routeguide_Feature>]
  583. /// - Returns: Interceptors to use when handling 'recordRoute'.
  584. /// Defaults to calling `self.makeInterceptors()`.
  585. func makeRecordRouteInterceptors() -> [ServerInterceptor<Routeguide_Point, Routeguide_RouteSummary>]
  586. /// - Returns: Interceptors to use when handling 'routeChat'.
  587. /// Defaults to calling `self.makeInterceptors()`.
  588. func makeRouteChatInterceptors() -> [ServerInterceptor<Routeguide_RouteNote, Routeguide_RouteNote>]
  589. }
  590. public enum Routeguide_RouteGuideServerMetadata {
  591. public static let serviceDescriptor = GRPCServiceDescriptor(
  592. name: "RouteGuide",
  593. fullName: "routeguide.RouteGuide",
  594. methods: [
  595. Routeguide_RouteGuideServerMetadata.Methods.getFeature,
  596. Routeguide_RouteGuideServerMetadata.Methods.listFeatures,
  597. Routeguide_RouteGuideServerMetadata.Methods.recordRoute,
  598. Routeguide_RouteGuideServerMetadata.Methods.routeChat,
  599. ]
  600. )
  601. public enum Methods {
  602. public static let getFeature = GRPCMethodDescriptor(
  603. name: "GetFeature",
  604. path: "/routeguide.RouteGuide/GetFeature",
  605. type: GRPCCallType.unary
  606. )
  607. public static let listFeatures = GRPCMethodDescriptor(
  608. name: "ListFeatures",
  609. path: "/routeguide.RouteGuide/ListFeatures",
  610. type: GRPCCallType.serverStreaming
  611. )
  612. public static let recordRoute = GRPCMethodDescriptor(
  613. name: "RecordRoute",
  614. path: "/routeguide.RouteGuide/RecordRoute",
  615. type: GRPCCallType.clientStreaming
  616. )
  617. public static let routeChat = GRPCMethodDescriptor(
  618. name: "RouteChat",
  619. path: "/routeguide.RouteGuide/RouteChat",
  620. type: GRPCCallType.bidirectionalStreaming
  621. )
  622. }
  623. }