/* * 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_EchoGetCallImpl: ClientCallUnaryImpl, Echo_EchoGetCall { override class var method: String { return "/echo.Echo/Get" } } internal protocol Echo_EchoExpandCall: ClientCallServerStreamingBase { /// 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_EchoExpandCallImpl: ClientCallServerStreamingImpl, 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: ClientCallClientStreamingBase { /// Call this to send each message in the request stream. Nonblocking. func send(_ message: Echo_EchoRequest, errorHandler: @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_EchoCollectCallImpl: ClientCallClientStreamingImpl, 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: ClientCallBidirectionalStreamingBase { /// 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, errorHandler: @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_EchoUpdateCallImpl: ClientCallBidirectionalStreamingImpl, 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_EchoServiceImpl, 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_EchoGetCallImpl(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_EchoGetCallImpl(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_EchoExpandCallImpl(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_EchoCollectCallImpl(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_EchoUpdateCallImpl(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_EchoGetSessionImpl: ServerSessionUnaryImpl, Echo_EchoGetSession {} class Echo_EchoGetSessionTestStub: ServerSessionUnaryTestStub, Echo_EchoGetSession {} internal protocol Echo_EchoExpandSession: ServerSessionServerStreaming { /// Send a message. Nonblocking. func send(_ response: Echo_EchoResponse, completion: ((Bool) -> Void)?) throws } fileprivate final class Echo_EchoExpandSessionImpl: ServerSessionServerStreamingImpl, 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_EchoCollectSessionImpl: ServerSessionClientStreamingImpl, 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: ((Bool) -> Void)?) throws /// Close a connection. Blocks until the connection is closed. func close() throws } fileprivate final class Echo_EchoUpdateSessionImpl: ServerSessionBidirectionalStreamingImpl, Echo_EchoUpdateSession {} class Echo_EchoUpdateSessionTestStub: ServerSessionBidirectionalStreamingTestStub, Echo_EchoUpdateSession {} /// Main server for generated service internal final class Echo_EchoServer: ServiceServer { private var 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) } /// 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_EchoGetSessionImpl( handler: handler, providerBlock: { try provider.get(request: $0, session: $1 as! Echo_EchoGetSessionImpl) }) .run(queue: queue) return true case "/echo.Echo/Expand": try Echo_EchoExpandSessionImpl( handler: handler, providerBlock: { try provider.expand(request: $0, session: $1 as! Echo_EchoExpandSessionImpl) }) .run(queue: queue) return true case "/echo.Echo/Collect": try Echo_EchoCollectSessionImpl( handler: handler, providerBlock: { try provider.collect(session: $0 as! Echo_EchoCollectSessionImpl) }) .run(queue: queue) return true case "/echo.Echo/Update": try Echo_EchoUpdateSessionImpl( handler: handler, providerBlock: { try provider.update(session: $0 as! Echo_EchoUpdateSessionImpl) }) .run(queue: queue) return true default: return false } } }