Class ChunkedResponseWriteHandler

  • All Implemented Interfaces:
    io.netty.channel.ChannelHandler, io.netty.channel.ChannelInboundHandler, io.netty.channel.ChannelOutboundHandler

    public class ChunkedResponseWriteHandler
    extends io.netty.channel.ChannelDuplexHandler
    A ChannelHandler that adds support for writing chunked xrootd replies. Loosely based on io.netty.handler.stream.ChunkedWriteHandler, but specialized for xrootd. Xrootd allows replies to be delivered out of order, which means that unchunked responses do not have to be queued and can be passed downstream right away. Since the handler is protocol specific, it can generated proper xrootd error responses in case of faults. ChunkedResponseWriteHandler does not support suspended transfers. To use ChunkedResponseWriteHandler, you have to insert a new ChunkedResponseWriteHandler instance:
     ChannelPipeline p = ...;
     p.addLast("streamer", new ChunkedResponseWriteHandler());
     p.addLast("handler", new MyHandler());
     
    Once inserted, you can write a ChunkedResponse so that the ChunkedResponseWriteHandler can pick it up and fetch the content of the stream chunk by chunk and write the fetched chunk downstream:
     Channel ch = ...;
     ReadRequest request = ...;
     long maxFrameSize = 2 << 20;
     FileChannel channel = ...;
     ch.write(new ChunkedFileChannelReadResponse(request, maxFrameSize, channel));
     
    • Nested Class Summary

      • Nested classes/interfaces inherited from interface io.netty.channel.ChannelHandler

        io.netty.channel.ChannelHandler.Sharable
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void channelInactive​(io.netty.channel.ChannelHandlerContext ctx)  
      void channelWritabilityChanged​(io.netty.channel.ChannelHandlerContext ctx)  
      void flush​(io.netty.channel.ChannelHandlerContext ctx)  
      void write​(io.netty.channel.ChannelHandlerContext ctx, java.lang.Object msg, io.netty.channel.ChannelPromise promise)  
      • Methods inherited from class io.netty.channel.ChannelDuplexHandler

        bind, close, connect, deregister, disconnect, read
      • Methods inherited from class io.netty.channel.ChannelInboundHandlerAdapter

        channelActive, channelRead, channelReadComplete, channelRegistered, channelUnregistered, exceptionCaught, userEventTriggered
      • Methods inherited from class io.netty.channel.ChannelHandlerAdapter

        ensureNotSharable, handlerAdded, handlerRemoved, isSharable
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface io.netty.channel.ChannelHandler

        handlerAdded, handlerRemoved
    • Constructor Detail

      • ChunkedResponseWriteHandler

        public ChunkedResponseWriteHandler()
    • Method Detail

      • write

        public void write​(io.netty.channel.ChannelHandlerContext ctx,
                          java.lang.Object msg,
                          io.netty.channel.ChannelPromise promise)
                   throws java.lang.Exception
        Specified by:
        write in interface io.netty.channel.ChannelOutboundHandler
        Overrides:
        write in class io.netty.channel.ChannelDuplexHandler
        Throws:
        java.lang.Exception
      • flush

        public void flush​(io.netty.channel.ChannelHandlerContext ctx)
                   throws java.lang.Exception
        Specified by:
        flush in interface io.netty.channel.ChannelOutboundHandler
        Overrides:
        flush in class io.netty.channel.ChannelDuplexHandler
        Throws:
        java.lang.Exception
      • channelInactive

        public void channelInactive​(io.netty.channel.ChannelHandlerContext ctx)
                             throws java.lang.Exception
        Specified by:
        channelInactive in interface io.netty.channel.ChannelInboundHandler
        Overrides:
        channelInactive in class io.netty.channel.ChannelInboundHandlerAdapter
        Throws:
        java.lang.Exception
      • channelWritabilityChanged

        public void channelWritabilityChanged​(io.netty.channel.ChannelHandlerContext ctx)
                                       throws java.lang.Exception
        Specified by:
        channelWritabilityChanged in interface io.netty.channel.ChannelInboundHandler
        Overrides:
        channelWritabilityChanged in class io.netty.channel.ChannelInboundHandlerAdapter
        Throws:
        java.lang.Exception