/** * @param serviceInstances A list of service instances * @return The next available instance or a {@link NoAvailableServiceException} if none */ protected ServiceInstance getNextAvailable(List<ServiceInstance> serviceInstances) { List<ServiceInstance> availableServices = serviceInstances.stream() .filter(si -> si.getHealthStatus().equals(HealthStatus.UP)) .collect(Collectors.toList()); int len = availableServices.size(); if (len == 0) { throw new NoAvailableServiceException(getServiceID()); } int i = index.getAndAccumulate(len, (cur, n) -> cur >= n - 1 ? 0 : cur + 1); try { return availableServices.get(i); } catch (IndexOutOfBoundsException e) { throw new NoAvailableServiceException(getServiceID()); } } }
/** * Updates the quorum size if it's larger than the current value. Ignores, if it's not. */ void setLargerQuorumSize(int newQuorumSize) { quorumSize.getAndAccumulate(newQuorumSize, Math::max); }
public long nextId() { long now = System.currentTimeMillis(); long ret = now - epoch; ret <<= 10; ret += offset.getAndAccumulate(MAX_OFFSET, accumulatorFunction); ret <<= 7; ret += shardId; return ret; }
@OpenCLMapping(atomic32 = true, mapTo = "atomic_xor") protected final int atomicXor(AtomicInteger p, int val) { return p.getAndAccumulate(val, xorOperator); }
@OpenCLMapping(atomic32 = true, mapTo = "atomic_and") protected final int atomicAnd(AtomicInteger p, int val) { return p.getAndAccumulate(val, andOperator); }
@OpenCLMapping(atomic32 = true, mapTo = "atomic_or") protected final int atomicOr(AtomicInteger p, int val) { return p.getAndAccumulate(val, orOperator); }
@OpenCLMapping(atomic32 = true, mapTo = "atomic_min") protected final int atomicMin(AtomicInteger p, int val) { return p.getAndAccumulate(val, minOperator); }
@OpenCLMapping(atomic32 = true, mapTo = "atomic_max") protected final int atomicMax(AtomicInteger p, int val) { return p.getAndAccumulate(val, maxOperator); }
/** * @param serviceInstances A list of service instances * @return The next available instance or a {@link NoAvailableServiceException} if none */ protected ServiceInstance getNextAvailable(List<ServiceInstance> serviceInstances) { List<ServiceInstance> availableServices = serviceInstances.stream() .filter(si -> si.getHealthStatus().equals(HealthStatus.UP)) .collect(Collectors.toList()); int len = availableServices.size(); if (len == 0) { throw new NoAvailableServiceException(getServiceID()); } int i = index.getAndAccumulate(len, (cur, n) -> cur >= n - 1 ? 0 : cur + 1); return availableServices.get(i); } }
private boolean handleUsage(@NotNull PsiMember member, @Nullable PsiClass memberClass, @NotNull PsiFile memberFile, @NotNull AtomicInteger maxLevel, @Nullable PsiPackage memberPackage, @NotNull PsiElement element, @NotNull PsiFile psiFile, @NotNull AtomicBoolean foundUsage) { foundUsage.set(true); if (!(psiFile instanceof PsiJavaFile)) { log(" refd from " + psiFile.getName() + "; set to public"); maxLevel.set(PsiUtil.ACCESS_LEVEL_PUBLIC); return false; // referenced from XML, has to be public } @PsiUtil.AccessLevel int level = getEffectiveLevel(element, psiFile, member, memberFile, memberClass, memberPackage); log(" ref in file " + psiFile.getName() + "; level = " + PsiUtil.getAccessModifier(level) + "; (" + element + ")"); maxLevel.getAndAccumulate(level, Math::max); return level != PsiUtil.ACCESS_LEVEL_PUBLIC; }
/** * @param serviceInstances A list of service instances * @return The next available instance or a {@link NoAvailableServiceException} if none */ protected ServiceInstance getNextAvailable(List<ServiceInstance> serviceInstances) { List<ServiceInstance> availableServices = serviceInstances.stream() .filter(si -> si.getHealthStatus().equals(HealthStatus.UP)) .collect(Collectors.toList()); int len = availableServices.size(); if (len == 0) { throw new NoAvailableServiceException(getServiceID()); } int i = index.getAndAccumulate(len, (cur, n) -> cur >= n - 1 ? 0 : cur + 1); try { return availableServices.get(i); } catch (IndexOutOfBoundsException e) { throw new NoAvailableServiceException(getServiceID()); } } }