GBidirectionalStreamingCall
public class GBidirectionalStreamingCall<Request, Response> : ICall where Request : Message, Response : Message
A bidirectional streaming Grebe call.
Both sides, the client and the server, send a sequence of messages. The two streams operate independently, so clients and servers can read and write and whatever oder they like: for example, the server could wait to receive all the client messages before writing its responses, or it could alternately read a message then write a message, or some other combination of reads and writes.
Example usage of GBidirectionalStreamingCall
Consider the following protobuf definition for a simple echo service. The service defines one bidirectional streaming RPC. You send a stream of messages and it echoes a stream of messages back to you.
syntax = "proto3";
service EchoService {
rpc echo (stream EchoRequest) returns (stream EchoResponse);
}
message EchoRequest {
string message = 1;
}
message EchoResponse {
string message = 1;
}
You can create a GBidirectionalStreamingCall like this:
let requests = Publishers.Sequence<[EchoRequest], Error>(
sequence: [EchoRequest.with { $0.message = "hello"}, EchoRequest.with { $0.message = "world"}]
).eraseToAnyPublisher()
GBidirectionalStreamingCall(request: requests, callOptions: callOptions, closure: echo)
-
Declaration
Swift
public typealias CallClosure = ( _ callOptions: CallOptions?, _ handler: @escaping (Response) -> Void ) -> GRPC.BidirectionalStreamingCall<Request, Response> -
The request message stream for the call.
Declaration
Swift
public var requests: AnyPublisher<Request, Error> -
Declaration
Swift
public let callClosure: CallClosure -
Declaration
Swift
public let callOptions: CallOptions? -
Sets up an new bidirectional streaming Grebe call.
Declaration
Swift
public init( requests: AnyPublisher<Request, Error>, callOptions: CallOptions? = nil, closure: @escaping CallClosure )Parameters
requestThe request message stream for the call.
callOptionsOptions to use for each service call.
closureThe closure which contains the executable call.
-
Executes the Grebe bidirectional streaming call.
Declaration
Swift
public func execute() -> AnyPublisher<Response, GRPCStatus>Return Value
A stream of
Responseelements. The response publisher may fail with aGRPCStatuserror.
GBidirectionalStreamingCall Class Reference