private int generateStreamId() { for (;;) { final int currentId = lastStreamId.get(); final int newStreamId = idGenerator.generate(currentId); if (lastStreamId.compareAndSet(currentId, newStreamId)) { return newStreamId; } } }
if (streamId > processedRemoteStreamId && !idGenerator.isSameSide(streamId)) { if (promisedStreamId == 0 || idGenerator.isSameSide(promisedStreamId)) { throw new H2ConnectionException(H2Error.PROTOCOL_ERROR, "Illegal promised stream id: " + promisedStreamId); final Map.Entry<Integer, Http2Stream> entry = it.next(); final int activeStreamId = entry.getKey(); if (!idGenerator.isSameSide(activeStreamId) && activeStreamId > processedLocalStreamId) { final Http2Stream stream = entry.getValue(); stream.cancel();