Class ProxyStateClientHandler



  • public class ProxyStateClientHandler
    extends ClientHandler
    ClientHandler that matches requests/response by appending Proxy-State attribute to outbound packets. This avoids problem with mismatched requests/responses when using packetIdentifier, which is limited to 256 unique IDs.
    • 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
      protected void handleResponse​(io.netty.channel.socket.DatagramPacket datagramPacket)
      Processes DatagramPacket.
      io.netty.channel.socket.DatagramPacket prepareDatagram​(RadiusPacket original, RadiusEndpoint endpoint, java.net.InetSocketAddress sender, io.netty.util.concurrent.Promise<RadiusPacket> promise)
      Preprocess RadiusPackets before they are sent.
      • Methods inherited from interface io.netty.channel.ChannelHandler

        handlerAdded, handlerRemoved
      • Methods inherited from class io.netty.channel.ChannelHandlerAdapter

        ensureNotSharable, handlerAdded, handlerRemoved, isSharable
      • Methods inherited from class io.netty.channel.ChannelInboundHandlerAdapter

        channelActive, channelInactive, channelReadComplete, channelRegistered, channelUnregistered, channelWritabilityChanged, exceptionCaught, userEventTriggered
      • Methods inherited from class java.lang.Object

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

        acceptInboundMessage, channelRead
    • Constructor Detail

      • ProxyStateClientHandler

        public ProxyStateClientHandler​(PacketEncoder packetEncoder)
        Parameters:
        packetEncoder - to decode packet incoming DatagramPackets to RadiusPackets
    • Method Detail

      • prepareDatagram

        public io.netty.channel.socket.DatagramPacket prepareDatagram​(RadiusPacket original,
                                                                      RadiusEndpoint endpoint,
                                                                      java.net.InetSocketAddress sender,
                                                                      io.netty.util.concurrent.Promise<RadiusPacket> promise)
                                                               throws RadiusException
        Description copied from class: ClientHandler
        Preprocess RadiusPackets before they are sent. May mutate outbound packets.

        Save state info about outgoing requests so handler has context when handling replies

        Ensure that you also return the encoded packet, typically with the shared secret available in RadiusEndpoint.

        Specified by:
        prepareDatagram in class ClientHandler
        Parameters:
        original - request to send
        endpoint - packet endpoint
        sender - outbound socket for datagram
        promise - promise placeholder that represents overarching request (including retries)
        Returns:
        promise of response which completes when server responds. Uses Promise instead Future, to allow requests to be timed out or cancelled by the caller
        Throws:
        RadiusException - if packet could not be encoded/serialized to datagram
      • handleResponse

        protected void handleResponse​(io.netty.channel.socket.DatagramPacket datagramPacket)
                               throws RadiusException
        Description copied from class: ClientHandler
        Processes DatagramPacket. This does not swallow exceptions.
        Specified by:
        handleResponse in class ClientHandler
        Parameters:
        datagramPacket - datagram received
        Throws:
        RadiusException - malformed packet