private void checkVersion(short version, int streamId) { if (version != SPDY.V2 && version != SPDY.V3) throw new StreamException(streamId, StreamStatus.UNSUPPORTED_VERSION); }
@Override public void onStreamException(StreamException x) { notifyOnFailure(listener, x); // TODO: notify StreamFrameListener if exists? rst(new RstInfo(x.getStreamId(), x.getStreamStatus()), Callback.Adapter.INSTANCE); }
private void writePriority(int streamId, short version, byte priority, ByteBuffer buffer) { switch (version) { case SPDY.V2: priority <<= 6; break; case SPDY.V3: priority <<= 5; break; default: throw new StreamException(streamId, StreamStatus.UNSUPPORTED_VERSION); } buffer.put(priority); } }
throw new StreamException(streamId, StreamStatus.PROTOCOL_ERROR, "Invalid header name length"); byte[] nameBytes = new byte[nameLength]; decompressedHeaders.get(nameBytes); throw new StreamException(streamId, StreamStatus.PROTOCOL_ERROR, "Invalid header value length"); byte[] valueBytes = new byte[valueLength]; decompressedHeaders.get(valueBytes); throw new StreamException(streamId, StreamStatus.PROTOCOL_ERROR, "Invalid multi valued header");
frameBytes.failed(new StreamException(frameBytes.getStream().getId(), StreamStatus.INVALID_STREAM, "Stream: " + frameBytes.getStream() + " is reset!")); continue;
@Override public void push(PushInfo pushInfo, Promise<Stream> promise) { notIdle(); if (isClosed() || isReset()) { close(); promise.failed(new StreamException(getId(), StreamStatus.STREAM_ALREADY_CLOSED, "Stream: " + this + " already closed or reset!")); return; } PushSynInfo pushSynInfo = new PushSynInfo(getId(), pushInfo); session.syn(pushSynInfo, null, new StreamPromise(promise)); }
StreamException exception = new StreamException(stream.getId(), StreamStatus.PROTOCOL_ERROR, "Stream already committed!"); callback.failed(exception);