public void queue()

in src/main/java/com/twitter/whiskey/net/SpdySession.java [149:181]


    public void queue(RequestOperation operation) {

        final SpdyStream stream = SpdyStream.newStream(operation);
        final int streamId = nextStreamId;
        nextStreamId += 2;
        stream.open(streamId, initialSendWindow, configuration.getStreamReceiveWindow());
        activeStreams.add(stream);

        // TODO: implement via interrupts to avoid unnecessary calls
        operation.addListener(new Listener<Response>() {
            @Override
            public void onComplete(Response result) {}

            @Override
            public void onError(Throwable throwable) {
                if (activeStreams.contains(stream)) {
                    activeStreams.remove(stream);
                    sendRstStream(streamId, SPDY_STREAM_CANCEL);
                }
            }

            @Override
            public Executor getExecutor() {
                return RunLoop.instance();
            }
        });
        boolean hasBody = stream.hasPendingData();
        sendSynStream(
            streamId, stream.getPriority(), !hasBody, stream.getCanonicalHeaders());
        if (hasBody) {
            sendData(stream);
        }
    }