@Override public void request(int count) { call.request(count); } }
private <ReqT, RespT> Listener<ReqT> unaryCall(final ServerCall<ReqT, RespT> call, final Metadata headers) { final ServerCallStreamObserverImpl<ReqT, RespT> responseObserver = new ServerCallStreamObserverImpl<ReqT, RespT>(call); call.request(2); return new ServerCall.Listener<ReqT>() { ReqT request;
responseObserver.freeze(); if (responseObserver.autoFlowControlEnabled) { call.request(1);
@Override public void request(int count) { call.request(count); } }
@Override public void request(int numMessages) { delegate().request(numMessages); }
@Override public void request(int numMessages) { delegate().request(numMessages); }
@Override public ServerCall.Listener<ReqT> startCall(ServerCall<ReqT, RespT> call, Metadata headers) { ServerCallStreamObserverImpl<ReqT, RespT> responseObserver = new ServerCallStreamObserverImpl<ReqT, RespT>(call); StreamObserver<ReqT> requestObserver = method.invoke(responseObserver); responseObserver.freeze(); if (responseObserver.autoFlowControlEnabled) { call.request(1); } return new StreamingServerCallListener(requestObserver, responseObserver, call); }
@Override public Listener<ReqT> startCall(ServerCall<ReqT, RespT> serverCall, Metadata headers) { Channel channel = finder.findChannel(serverCall, headers); ClientCall<ReqT, RespT> clientCall = channel.newCall( serverCall.getMethodDescriptor(), callOptions); ProxyCall<ReqT, RespT> proxyCall = new ProxyCall<>( serverCall, clientCall); clientCall.start(proxyCall.getClientCallListener(), headers); serverCall.request(1); clientCall.request(1); return proxyCall.getServerCallListener(); } }
@Override public ServerCall.Listener<ReqT> startCall(ServerCall<ReqT, RespT> call, Metadata headers) { Preconditions.checkArgument( call.getMethodDescriptor().getType().clientSendsOneMessage(), "asyncUnaryRequestCall is only for clientSendsOneMessage methods"); ServerCallStreamObserverImpl<ReqT, RespT> responseObserver = new ServerCallStreamObserverImpl<ReqT, RespT>(call); // We expect only 1 request, but we ask for 2 requests here so that if a misbehaving client // sends more than 1 requests, ServerCall will catch it. Note that disabling auto // inbound flow control has no effect on unary calls. call.request(2); return new UnaryServerCallListener(responseObserver, call); }