public final int getAndDecrement() { return indexUpdater.getAndDecrement(this) & Integer.MAX_VALUE; }
public final int getAndDecrement() { return indexUpdater.getAndDecrement(this) & Integer.MAX_VALUE; }
Http2StreamSourceChannel removeStreamSource(int streamId) { StreamHolder existing = currentStreams.get(streamId); if(existing == null){ return null; } existing.sourceClosed = true; Http2StreamSourceChannel ret = existing.sourceChannel; existing.sourceChannel = null; if(existing.sinkClosed) { if(streamId % 2 == (isClient() ? 1 : 0)) { sendConcurrentStreamsAtomicUpdater.getAndDecrement(this); } else { receiveConcurrentStreamsAtomicUpdater.getAndDecrement(this); } currentStreams.remove(streamId); } return ret; }
private void handleRstStream(int streamId) { StreamHolder holder = currentStreams.remove(streamId); if(holder != null) { if(streamId % 2 == (isClient() ? 1 : 0)) { sendConcurrentStreamsAtomicUpdater.getAndDecrement(this); } else { receiveConcurrentStreamsAtomicUpdater.getAndDecrement(this); } if (holder.sinkChannel != null) { holder.sinkChannel.rstStream(); } if (holder.sourceChannel != null) { holder.sourceChannel.rstStream(); } } }
void removeStreamSink(int streamId) { StreamHolder existing = currentStreams.get(streamId); if(existing == null) { return; } existing.sinkClosed = true; existing.sinkChannel = null; if(existing.sourceClosed) { if(streamId % 2 == (isClient() ? 1 : 0)) { sendConcurrentStreamsAtomicUpdater.getAndDecrement(this); } else { receiveConcurrentStreamsAtomicUpdater.getAndDecrement(this); } currentStreams.remove(streamId); } if(isLastFrameReceived() && currentStreams.isEmpty()) { sendGoAway(ERROR_NO_ERROR); } else if(parseTimeoutUpdater != null && currentStreams.isEmpty()) { parseTimeoutUpdater.connectionIdle(); } }
boolean result; if (result = doRemove(item, table.resizeView)) { sizeUpdater.getAndDecrement(table); if (ve.equals(item, oldRow[i])) { if (array.compareAndSet(idx, oldRow, remove(oldRow, i))) { sizeUpdater.getAndDecrement(table); return true; } else {
private V doRemove(final int key, final Table<V> table) { final AtomicReferenceArray<V[]> array = table.array; final int idx = key & array.length() - 1; V[] oldRow; OUTER: for (;;) { oldRow = array.get(idx); if (oldRow == null) { return nonexistent(); } if (oldRow == RESIZED) { V result; if ((result = doRemove(key, table.resizeView)) != NONEXISTENT) { sizeUpdater.getAndDecrement(table); } return result; } for (int i = 0; i < oldRow.length; i ++) { if (key == indexer.applyAsInt(oldRow[i])) { if (array.compareAndSet(idx, oldRow, remove(oldRow, i))) { sizeUpdater.getAndDecrement(table); return oldRow[i]; } else { continue OUTER; } } } // not found return nonexistent(); } }
public final int getAndDecrement() { return indexUpdater.getAndDecrement(this) & Integer.MAX_VALUE; }
holder.sourceClosed = true; if(holder.sinkClosed) { receiveConcurrentStreamsAtomicUpdater.getAndDecrement(this); currentStreams.remove(frameParser.streamId);
public final int getAndDecrement() { return indexUpdater.getAndDecrement(this) & Integer.MAX_VALUE; }
public final int getAndDecrement() { return updater.getAndDecrement(this); } public final int addAndGet(int delta) {
public final int getAndDecrement() { return indexUpdater.getAndDecrement(this) & Integer.MAX_VALUE; }
public final int getAndDecrement() { return indexUpdater.getAndDecrement(this) & Integer.MAX_VALUE; }
public final int getAndDecrement() { return indexUpdater.getAndDecrement(this) & Integer.MAX_VALUE; }
Http2StreamSourceChannel removeStreamSource(int streamId) { StreamHolder existing = currentStreams.get(streamId); if(existing == null){ return null; } existing.sourceClosed = true; Http2StreamSourceChannel ret = existing.sourceChannel; existing.sourceChannel = null; if(existing.sinkClosed) { if(streamId % 2 == (isClient() ? 1 : 0)) { sendConcurrentStreamsAtomicUpdater.getAndDecrement(this); } else { receiveConcurrentStreamsAtomicUpdater.getAndDecrement(this); } currentStreams.remove(streamId); } return ret; }
Http2StreamSourceChannel removeStreamSource(int streamId) { StreamHolder existing = currentStreams.get(streamId); if(existing == null){ return null; } existing.sourceClosed = true; Http2StreamSourceChannel ret = existing.sourceChannel; existing.sourceChannel = null; if(existing.sinkClosed) { if(streamId % 2 == (isClient() ? 1 : 0)) { sendConcurrentStreamsAtomicUpdater.getAndDecrement(this); } else { receiveConcurrentStreamsAtomicUpdater.getAndDecrement(this); } currentStreams.remove(streamId); } return ret; }
private void handleRstStream(int streamId) { StreamHolder holder = currentStreams.remove(streamId); if(holder != null) { if(streamId % 2 == (isClient() ? 1 : 0)) { sendConcurrentStreamsAtomicUpdater.getAndDecrement(this); } else { receiveConcurrentStreamsAtomicUpdater.getAndDecrement(this); } if (holder.sinkChannel != null) { holder.sinkChannel.rstStream(); } if (holder.sourceChannel != null) { holder.sourceChannel.rstStream(); } } }
private void handleRstStream(int streamId) { StreamHolder holder = currentStreams.remove(streamId); if(holder != null) { if(streamId % 2 == (isClient() ? 1 : 0)) { sendConcurrentStreamsAtomicUpdater.getAndDecrement(this); } else { receiveConcurrentStreamsAtomicUpdater.getAndDecrement(this); } if (holder.sinkChannel != null) { holder.sinkChannel.rstStream(); } if (holder.sourceChannel != null) { holder.sourceChannel.rstStream(); } } }
void unreferenced(Segment segment) { if (cRefCountUpdater.getAndDecrement(segment) > 0) { return; } // Unmap the segment and close the least recently used. Segment toClose = mSegmentCache.add(segment); Worker.Task task = new Worker.Task() { @Override public void run() { try { doUnreferenced(segment, toClose); } catch (IOException e) { uncaught(e); } } }; synchronized (mWorker) { mWorker.enqueue(task); } }
@Override public void run() { cRefCountUpdater.getAndIncrement(segment); try { segment.truncate(); } catch (IOException e) { uncaught(e); } if (cRefCountUpdater.getAndDecrement(segment) <= 0) { try { doUnreferenced(segment, mSegmentCache.add(segment)); } catch (IOException e) { uncaught(e); } } } };