// // DO NOT EDIT. // // Generated by the protocol buffer compiler. // Source: echo.proto // // // Copyright 2018, gRPC Authors All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // import Foundation import Dispatch import gRPC import SwiftProtobuf internal protocol Echo_EchoGetCall: ClientCallUnary {} fileprivate final class Echo_EchoGetCallBase: ClientCallUnaryBase, Echo_EchoGetCall { override class var method: String { return "/echo.Echo/Get" } } internal protocol Echo_EchoExpandCall: ClientCallServerStreaming { /// Call this to wait for a result. Blocking. func receive() throws -> Echo_EchoResponse /// Call this to wait for a result. Nonblocking. func receive(completion: @escaping (Echo_EchoResponse?, ClientError?) -> Void) throws } fileprivate final class Echo_EchoExpandCallBase: ClientCallServerStreamingBase, Echo_EchoExpandCall { override class var method: String { return "/echo.Echo/Expand" } } class Echo_EchoExpandCallTestStub: ClientCallServerStreamingTestStub, Echo_EchoExpandCall { override class var method: String { return "/echo.Echo/Expand" } } internal protocol Echo_EchoCollectCall: ClientCallClientStreaming { /// Call this to send each message in the request stream. Nonblocking. func send(_ message: Echo_EchoRequest, completion: @escaping (Error?) -> Void) throws /// Call this to close the connection and wait for a response. Blocking. func closeAndReceive() throws -> Echo_EchoResponse /// Call this to close the connection and wait for a response. Nonblocking. func closeAndReceive(completion: @escaping (Echo_EchoResponse?, ClientError?) -> Void) throws } fileprivate final class Echo_EchoCollectCallBase: ClientCallClientStreamingBase, Echo_EchoCollectCall { override class var method: String { return "/echo.Echo/Collect" } } /// Simple fake implementation of Echo_EchoCollectCall /// stores sent values for later verification and finall returns a previously-defined result. class Echo_EchoCollectCallTestStub: ClientCallClientStreamingTestStub, Echo_EchoCollectCall { override class var method: String { return "/echo.Echo/Collect" } } internal protocol Echo_EchoUpdateCall: ClientCallBidirectionalStreaming { /// Call this to wait for a result. Blocking. func receive() throws -> Echo_EchoResponse /// Call this to wait for a result. Nonblocking. func receive(completion: @escaping (Echo_EchoResponse?, ClientError?) -> Void) throws /// Call this to send each message in the request stream. func send(_ message: Echo_EchoRequest, completion: @escaping (Error?) -> Void) throws /// Call this to close the sending connection. Blocking. func closeSend() throws /// Call this to close the sending connection. Nonblocking. func closeSend(completion: (() -> Void)?) throws } fileprivate final class Echo_EchoUpdateCallBase: ClientCallBidirectionalStreamingBase, Echo_EchoUpdateCall { override class var method: String { return "/echo.Echo/Update" } } class Echo_EchoUpdateCallTestStub: ClientCallBidirectionalStreamingTestStub, Echo_EchoUpdateCall { override class var method: String { return "/echo.Echo/Update" } } /// Instantiate Echo_EchoServiceClient, then call methods of this protocol to make API calls. internal protocol Echo_EchoService: ServiceClient { /// Synchronous. Unary. func get(_ request: Echo_EchoRequest) throws -> Echo_EchoResponse /// Asynchronous. Unary. func get(_ request: Echo_EchoRequest, completion: @escaping (Echo_EchoResponse?, CallResult) -> Void) throws -> Echo_EchoGetCall /// Asynchronous. Server-streaming. /// Send the initial message. /// Use methods on the returned object to get streamed responses. func expand(_ request: Echo_EchoRequest, completion: ((CallResult) -> Void)?) throws -> Echo_EchoExpandCall /// Asynchronous. Client-streaming. /// Use methods on the returned object to stream messages and /// to close the connection and wait for a final response. func collect(completion: ((CallResult) -> Void)?) throws -> Echo_EchoCollectCall /// Asynchronous. Bidirectional-streaming. /// Use methods on the returned object to stream messages, /// to wait for replies, and to close the connection. func update(completion: ((CallResult) -> Void)?) throws -> Echo_EchoUpdateCall } internal final class Echo_EchoServiceClient: ServiceClientBase, Echo_EchoService { /// Synchronous. Unary. internal func get(_ request: Echo_EchoRequest) throws -> Echo_EchoResponse { return try Echo_EchoGetCallBase(channel) .run(request: request, metadata: metadata) } /// Asynchronous. Unary. internal func get(_ request: Echo_EchoRequest, completion: @escaping (Echo_EchoResponse?, CallResult) -> Void) throws -> Echo_EchoGetCall { return try Echo_EchoGetCallBase(channel) .start(request: request, metadata: metadata, completion: completion) } /// Asynchronous. Server-streaming. /// Send the initial message. /// Use methods on the returned object to get streamed responses. internal func expand(_ request: Echo_EchoRequest, completion: ((CallResult) -> Void)?) throws -> Echo_EchoExpandCall { return try Echo_EchoExpandCallBase(channel) .start(request: request, metadata: metadata, completion: completion) } /// Asynchronous. Client-streaming. /// Use methods on the returned object to stream messages and /// to close the connection and wait for a final response. internal func collect(completion: ((CallResult) -> Void)?) throws -> Echo_EchoCollectCall { return try Echo_EchoCollectCallBase(channel) .start(metadata: metadata, completion: completion) } /// Asynchronous. Bidirectional-streaming. /// Use methods on the returned object to stream messages, /// to wait for replies, and to close the connection. internal func update(completion: ((CallResult) -> Void)?) throws -> Echo_EchoUpdateCall { return try Echo_EchoUpdateCallBase(channel) .start(metadata: metadata, completion: completion) } } class Echo_EchoServiceTestStub: ServiceClientTestStubBase, Echo_EchoService { var getRequests: [Echo_EchoRequest] = [] var getResponses: [Echo_EchoResponse] = [] func get(_ request: Echo_EchoRequest) throws -> Echo_EchoResponse { getRequests.append(request) defer { getResponses.removeFirst() } return getResponses.first! } func get(_ request: Echo_EchoRequest, completion: @escaping (Echo_EchoResponse?, CallResult) -> Void) throws -> Echo_EchoGetCall { fatalError("not implemented") } var expandRequests: [Echo_EchoRequest] = [] var expandCalls: [Echo_EchoExpandCall] = [] func expand(_ request: Echo_EchoRequest, completion: ((CallResult) -> Void)?) throws -> Echo_EchoExpandCall { expandRequests.append(request) defer { expandCalls.removeFirst() } return expandCalls.first! } var collectCalls: [Echo_EchoCollectCall] = [] func collect(completion: ((CallResult) -> Void)?) throws -> Echo_EchoCollectCall { defer { collectCalls.removeFirst() } return collectCalls.first! } var updateCalls: [Echo_EchoUpdateCall] = [] func update(completion: ((CallResult) -> Void)?) throws -> Echo_EchoUpdateCall { defer { updateCalls.removeFirst() } return updateCalls.first! } } /// To build a server, implement a class that conforms to this protocol. internal protocol Echo_EchoProvider { func get(request: Echo_EchoRequest, session: Echo_EchoGetSession) throws -> Echo_EchoResponse func expand(request: Echo_EchoRequest, session: Echo_EchoExpandSession) throws func collect(session: Echo_EchoCollectSession) throws func update(session: Echo_EchoUpdateSession) throws } internal protocol Echo_EchoGetSession: ServerSessionUnary {} fileprivate final class Echo_EchoGetSessionBase: ServerSessionUnaryBase, Echo_EchoGetSession {} class Echo_EchoGetSessionTestStub: ServerSessionUnaryTestStub, Echo_EchoGetSession {} internal protocol Echo_EchoExpandSession: ServerSessionServerStreaming { /// Send a message. Nonblocking. func send(_ response: Echo_EchoResponse, completion: ((Error?) -> Void)?) throws } fileprivate final class Echo_EchoExpandSessionBase: ServerSessionServerStreamingBase, Echo_EchoExpandSession {} class Echo_EchoExpandSessionTestStub: ServerSessionServerStreamingTestStub, Echo_EchoExpandSession {} internal protocol Echo_EchoCollectSession: ServerSessionClientStreaming { /// Receive a message. Blocks until a message is received or the client closes the connection. func receive() throws -> Echo_EchoRequest /// Send a response and close the connection. func sendAndClose(_ response: Echo_EchoResponse) throws } fileprivate final class Echo_EchoCollectSessionBase: ServerSessionClientStreamingBase, Echo_EchoCollectSession {} class Echo_EchoCollectSessionTestStub: ServerSessionClientStreamingTestStub, Echo_EchoCollectSession {} internal protocol Echo_EchoUpdateSession: ServerSessionBidirectionalStreaming { /// Receive a message. Blocks until a message is received or the client closes the connection. func receive() throws -> Echo_EchoRequest /// Send a message. Nonblocking. func send(_ response: Echo_EchoResponse, completion: ((Error?) -> Void)?) throws /// Close a connection. Blocks until the connection is closed. func close() throws } fileprivate final class Echo_EchoUpdateSessionBase: ServerSessionBidirectionalStreamingBase, Echo_EchoUpdateSession {} class Echo_EchoUpdateSessionTestStub: ServerSessionBidirectionalStreamingTestStub, Echo_EchoUpdateSession {} /// Main server for generated service internal final class Echo_EchoServer: ServiceServer { private let provider: Echo_EchoProvider internal init(address: String, provider: Echo_EchoProvider) { self.provider = provider super.init(address: address) } internal init?(address: String, certificateURL: URL, keyURL: URL, provider: Echo_EchoProvider) { self.provider = provider super.init(address: address, certificateURL: certificateURL, keyURL: keyURL) } internal init?(address: String, certificateString: String, keyString: String, provider: Echo_EchoProvider) { self.provider = provider super.init(address: address, certificateString: certificateString, keyString: keyString) } /// Start the server. internal override func handleMethod(_ method: String, handler: Handler, queue: DispatchQueue) throws -> Bool { let provider = self.provider switch method { case "/echo.Echo/Get": try Echo_EchoGetSessionBase( handler: handler, providerBlock: { try provider.get(request: $0, session: $1 as! Echo_EchoGetSessionBase) }) .run(queue: queue) return true case "/echo.Echo/Expand": try Echo_EchoExpandSessionBase( handler: handler, providerBlock: { try provider.expand(request: $0, session: $1 as! Echo_EchoExpandSessionBase) }) .run(queue: queue) return true case "/echo.Echo/Collect": try Echo_EchoCollectSessionBase( handler: handler, providerBlock: { try provider.collect(session: $0 as! Echo_EchoCollectSessionBase) }) .run(queue: queue) return true case "/echo.Echo/Update": try Echo_EchoUpdateSessionBase( handler: handler, providerBlock: { try provider.update(session: $0 as! Echo_EchoUpdateSessionBase) }) .run(queue: queue) return true default: return false } } }