当前位置: 首页>>代码示例>>Java>>正文


Java BackpressureUtils.addCap方法代码示例

本文整理汇总了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;
            }
        }
    }
}
 
开发者ID:josesamuel,项目名称:RxRemote,代码行数:16,代码来源:RemoteSubject.java

示例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;
    }
  }
}
 
开发者ID:Trunkplatform,项目名称:rxjava-json,代码行数:81,代码来源:OperatorCollectObjects.java

示例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;
    }
  }
}
 
开发者ID:Trunkplatform,项目名称:rxjava-json,代码行数:64,代码来源:OperatorJsonToken.java

示例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;
    }
  }
}
 
开发者ID:Trunkplatform,项目名称:rxjava-json,代码行数:77,代码来源:OperatorStringToChar.java

示例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;
    }
  }
}
 
开发者ID:Trunkplatform,项目名称:rxjava-json,代码行数:68,代码来源:OperatorJsonGson.java


注:本文中的rx.internal.operators.BackpressureUtils.addCap方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。