Example usage for io.netty.handler.codec.http2 Http2Error REFUSED_STREAM

List of usage examples for io.netty.handler.codec.http2 Http2Error REFUSED_STREAM

Introduction

In this page you can find the example usage for io.netty.handler.codec.http2 Http2Error REFUSED_STREAM.

Prototype

Http2Error REFUSED_STREAM

To view the source code for io.netty.handler.codec.http2 Http2Error REFUSED_STREAM.

Click Source Link

Usage

From source file:com.turo.pushy.apns.ApnsClientHandler.java

License:Open Source License

@Override
public void onRstStreamRead(final ChannelHandlerContext context, final int streamId, final long errorCode) {
    if (errorCode == Http2Error.REFUSED_STREAM.code()) {
        // This can happen if the server reduces MAX_CONCURRENT_STREAMS while we already have notifications in
        // flight. We may get multiple RST_STREAM frames per stream since we send multiple frames (HEADERS and
        // DATA) for each push notification, but we should only get one REFUSED_STREAM error; the rest should all be
        // STREAM_CLOSED.
        this.retryPushNotificationFromStream(context, streamId);
    }/*from w ww . j ava 2 s .c  o m*/
}

From source file:io.grpc.netty.NettyClientHandler.java

License:Apache License

/**
 * Handler for an inbound HTTP/2 RST_STREAM frame, terminating a stream.
 *//*from  www . java  2s .  c  o m*/
private void onRstStreamRead(int streamId, long errorCode) {
    NettyClientStream.TransportState stream = clientStream(connection().stream(streamId));
    if (stream != null) {
        PerfMark.event("NettyClientHandler.onRstStreamRead", stream.tag());
        Status status = GrpcUtil.Http2Error.statusForCode((int) errorCode)
                .augmentDescription("Received Rst Stream");
        stream.transportReportStatus(status,
                errorCode == Http2Error.REFUSED_STREAM.code() ? RpcProgress.REFUSED : RpcProgress.PROCESSED,
                false /*stop delivery*/, new Metadata());
        if (keepAliveManager != null) {
            keepAliveManager.onDataReceived();
        }
    }
}

From source file:io.grpc.netty.NettyClientHandlerTest.java

License:Apache License

@Test
public void receivedResetWithRefuseCode() throws Exception {
    ChannelFuture future = enqueue(newCreateStreamCommand(grpcHeaders, streamTransportState));
    channelRead(rstStreamFrame(streamId, (int) Http2Error.REFUSED_STREAM.code()));
    verify(streamListener).closed(any(Status.class), eq(REFUSED), any(Metadata.class));
    assertTrue(future.isDone());/*from   w w  w  .  jav  a2 s  . com*/
}

From source file:org.wso2.carbon.http2.transport.util.Http2ClientHandler.java

License:Open Source License

/**
 * Read respond frames from netty channel and pass to ResponseReceiver
 *
 * @param ctx//from  w  ww  .j  ava  2 s  .c  o m
 * @param msg
 */
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) {
    if (msg instanceof Http2HeadersFrame) {
        Http2HeadersFrame frame = (Http2HeadersFrame) msg;
        if (!sentRequests.containsKey(frame.streamId())) {
            return;
        }
        receiver.onHeadersFrameRead(frame, sentRequests.get(frame.streamId()));
        if (frame.isEndStream()) {
            sentRequests.remove(frame.streamId());
        }
    } else if (msg instanceof Http2DataFrame) {
        Http2DataFrame frame = (Http2DataFrame) msg;
        if (!sentRequests.containsKey(frame.streamId())) {
            return;
        }
        receiver.onDataFrameRead(frame, sentRequests.get(frame.streamId()));
        if (frame.isEndStream()) {
            sentRequests.remove(frame.streamId());
        }
    } else if (msg instanceof Http2PushPromiseFrame) {
        Http2PushPromiseFrame frame = (Http2PushPromiseFrame) msg;
        if (!sentRequests.containsKey(frame.streamId())) {
            return;
        }
        MessageContext prevRequest = sentRequests.get(frame.streamId());

        //if the inbound is not accept push requests reject them
        if (!receiver.isServerPushAccepted()) {
            writer.writeRestSreamRequest(frame.getPushPromiseId(), Http2Error.REFUSED_STREAM);
            return;
        }

        sentRequests.put(frame.getPushPromiseId(), prevRequest);
        receiver.onPushPromiseFrameRead(frame, prevRequest);

    } else if (msg instanceof Http2Settings) {
        setChContext(ctx);
        receiver.onUnknownFrameRead(msg);

    } else if (msg instanceof Http2GoAwayFrame) {
        receiver.onUnknownFrameRead(msg);

    } else if (msg instanceof Http2ResetFrame) {
        if (sentRequests.containsKey(((Http2ResetFrame) msg).streamId())) {
            sentRequests.remove(((Http2ResetFrame) msg).streamId());
        }
        receiver.onUnknownFrameRead(msg);

    } else {
        receiver.onUnknownFrameRead(msg);

    }
}