43 lines
1.6 KiB
Java
43 lines
1.6 KiB
Java
|
package io.grpc.stub;
|
||
|
|
||
|
import com.google.common.base.Preconditions;
|
||
|
import java.util.Iterator;
|
||
|
|
||
|
/* loaded from: classes6.dex */
|
||
|
public final class StreamObservers {
|
||
|
public static <V> void copyWithFlowControl(Iterator<V> it, CallStreamObserver<V> callStreamObserver) {
|
||
|
Preconditions.checkNotNull(it, "source");
|
||
|
Preconditions.checkNotNull(callStreamObserver, "target");
|
||
|
callStreamObserver.setOnReadyHandler(new Runnable(callStreamObserver, it) { // from class: io.grpc.stub.StreamObservers.1FlowControllingOnReadyHandler
|
||
|
private boolean completed;
|
||
|
final Iterator val$source;
|
||
|
final CallStreamObserver val$target;
|
||
|
|
||
|
{
|
||
|
this.val$target = callStreamObserver;
|
||
|
this.val$source = it;
|
||
|
}
|
||
|
|
||
|
@Override // java.lang.Runnable
|
||
|
public final void run() {
|
||
|
if (this.completed) {
|
||
|
return;
|
||
|
}
|
||
|
while (this.val$target.isReady() && this.val$source.hasNext()) {
|
||
|
this.val$target.onNext(this.val$source.next());
|
||
|
}
|
||
|
if (this.val$source.hasNext()) {
|
||
|
return;
|
||
|
}
|
||
|
this.completed = true;
|
||
|
this.val$target.onCompleted();
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
|
||
|
public static <V> void copyWithFlowControl(Iterable<V> iterable, CallStreamObserver<V> callStreamObserver) {
|
||
|
Preconditions.checkNotNull(iterable, "source");
|
||
|
copyWithFlowControl(iterable.iterator(), callStreamObserver);
|
||
|
}
|
||
|
}
|