本文整理汇总了Java中rx.internal.operators.BackpressureUtils.addCap方法的典型用法代码示例。如果您正苦于以下问题:Java BackpressureUtils.addCap方法的具体用法?Java BackpressureUtils.addCap怎么用?Java BackpressureUtils.addCap使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类rx.internal.operators.BackpressureUtils
的用法示例。
在下文中一共展示了BackpressureUtils.addCap方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: request
import rx.internal.operators.BackpressureUtils; //导入方法依赖的package包/类
@Override
public void request(long n) {
if (BackpressureUtils.validate(n)) {
for (; ; ) {
long r = get();
if (r == Long.MIN_VALUE) {
return;
}
long u = BackpressureUtils.addCap(r, n);
if (compareAndSet(r, u)) {
return;
}
}
}
}
示例2: request
import rx.internal.operators.BackpressureUtils; //导入方法依赖的package包/类
@Override
public void request(long n) {
if (n < 0) {
throw new IllegalArgumentException();
}
if (BackpressureUtils.getAndAddRequest(currentRequest, n) != 0) {
return;
}
long r = BackpressureUtils.addCap(backlog.get(), n);
backlog.set(r);
currentRequest.set(r);
if (r == 0) {
return;
}
if (upstream.completed() && upstream.buffer.isEmpty()) {
complete();
return;
}
if (!upstream.started()) {
backlog.set(r);
currentRequest.set(0);
return;
}
// loop so that additional requests are processed in sequence
for (;;) {
if (downstream.isUnsubscribed()) {
return;
}
int e = 0;
if (upstream.buffer.isEmpty()) {
upstream.requestMore();
}
if (upstream.buffer.isEmpty()) {
if (upstream.completed() && !downstream.isUnsubscribed()) {
complete();
return;
}
backlog.set(r);
currentRequest.set(0);
return;
}
while (r > 0 && !upstream.buffer.isEmpty()) {
JsonPathEvent pathEvent = upstream.buffer.poll();
if (isDocumentEnd(pathEvent)) {
if (!tokenBuffer.isEmpty()) {
if (emit(null)) {
++e;
--r;
}
}
} else {
if (newObject(pathEvent)) {
if (emit(pathEvent.getMatchedPathFragment())) {
++e;
--r;
}
}
tokenBuffer.add(pathEvent.getTokenEvent());
}
if (downstream.isUnsubscribed()) {
return;
}
if (tokenBuffer.isEmpty()) {
if (upstream.completed() && !downstream.isUnsubscribed()) {
complete();
return;
}
break;
}
}
// check for more requests
r = currentRequest.addAndGet(-e);
backlog.addAndGet(-e);
if (r == 0) {
return;
}
}
}
示例3: request
import rx.internal.operators.BackpressureUtils; //导入方法依赖的package包/类
@Override
public void request(long n) {
if (n < 0) {
throw new IllegalArgumentException();
}
if (BackpressureUtils.getAndAddRequest(currentRequest, n) != 0) {
return;
}
long r = BackpressureUtils.addCap(backlog.get(), n);
backlog.set(r);
currentRequest.set(r);
if (r == 0) {
return;
}
if (upstream.completed() && upstream.isEmpty()) {
complete();
return;
}
if (!upstream.started()) {
backlog.set(r);
currentRequest.set(0);
return;
}
// loop so that additional requests are processed in sequence
for (;;) {
if (downstream.isUnsubscribed()) {
return;
}
int e = 0;
if (upstream.isEmpty()) {
upstream.requestMore();
}
if (upstream.isEmpty()) {
if (upstream.completed() && !downstream.isUnsubscribed()) {
complete();
return;
}
backlog.set(r);
currentRequest.set(0);
return;
}
while (r > 0 && !upstream.isEmpty()) {
downstream.onNext(upstream.poll());
if (downstream.isUnsubscribed()) {
return;
}
++e;
--r;
}
if (upstream.isEmpty() && upstream.completed() && !downstream.isUnsubscribed()) {
complete();
return;
}
// check for more requests
r = currentRequest.addAndGet(-e);
backlog.addAndGet(-e);
if (r == 0) {
return;
}
}
}
示例4: request
import rx.internal.operators.BackpressureUtils; //导入方法依赖的package包/类
@Override
public void request(long n) {
if (n < 0) {
throw new IllegalArgumentException();
}
if (BackpressureUtils.getAndAddRequest(currentRequest, n) != 0) {
return;
}
long r = BackpressureUtils.addCap(backlog.get(), n);
backlog.set(r);
currentRequest.set(r);
if (r == 0) {
return;
}
if (upstream.completed() && upstream.buffer.isEmpty()) {
complete();
return;
}
if (!upstream.started()) {
backlog.set(r);
currentRequest.set(0);
return;
}
// loop so that additional requests are processed in sequence
for (; ; ) {
if (downstream.isUnsubscribed()) {
return;
}
int i = index;
int e = 0;
if (upstream.buffer.isEmpty()) {
upstream.requestMore();
}
while (!upstream.buffer.isEmpty() && upstream.buffer.peek().isEmpty()) {
upstream.buffer.poll();
upstream.requestMore();
}
if (upstream.buffer.isEmpty()) {
if (upstream.completed() && !downstream.isUnsubscribed()) {
complete();
return;
}
backlog.set(r);
currentRequest.set(0);
return;
}
String s = upstream.buffer.peek();
while (r > 0 && i < s.length()) {
downstream.onNext(s.charAt(i));
if (downstream.isUnsubscribed()) {
return;
}
++i;
++e;
--r;
if (i == s.length()) {
if (upstream.completed() && !downstream.isUnsubscribed()) {
complete();
return;
}
upstream.buffer.poll();
i = 0;
break;
}
}
index = i;
// check for more requests
r = currentRequest.addAndGet(-e);
backlog.addAndGet(-e);
if (r == 0) {
return;
}
}
}
示例5: request
import rx.internal.operators.BackpressureUtils; //导入方法依赖的package包/类
@Override
public void request(long n) {
if (n < 0) {
throw new IllegalArgumentException();
}
if (BackpressureUtils.getAndAddRequest(currentRequest, n) != 0) {
return;
}
long r = BackpressureUtils.addCap(backlog.get(), n);
backlog.set(r);
currentRequest.set(r);
if (r == 0) {
return;
}
if (upstream.completed() && upstream.buffer.isEmpty()) {
complete();
return;
}
if (!upstream.started()) {
backlog.set(r);
currentRequest.set(0);
return;
}
// loop so that additional requests are processed in sequence
for (;;) {
if (downstream.isUnsubscribed()) {
return;
}
int e = 0;
if (upstream.buffer.isEmpty()) {
upstream.requestMore();
}
if (upstream.buffer.isEmpty()) {
if (upstream.completed() && !downstream.isUnsubscribed()) {
complete();
return;
}
backlog.set(r);
currentRequest.set(0);
return;
}
while (r > 0 && !upstream.buffer.isEmpty()) {
if (consumeAndEmit()) {
++e;
--r;
}
if (downstream.isUnsubscribed()) {
return;
}
if (upstream.buffer.isEmpty()) {
if (upstream.completed() && !downstream.isUnsubscribed()) {
complete();
return;
}
break;
}
}
// check for more requests
r = currentRequest.addAndGet(-e);
backlog.addAndGet(-e);
if (r == 0) {
return;
}
}
}