Class AbstractPCEPSessionNegotiator

java.lang.Object
io.netty.channel.ChannelHandlerAdapter
io.netty.channel.ChannelInboundHandlerAdapter
org.opendaylight.protocol.pcep.impl.AbstractSessionNegotiator
org.opendaylight.protocol.pcep.impl.AbstractPCEPSessionNegotiator
All Implemented Interfaces:
io.netty.channel.ChannelHandler, io.netty.channel.ChannelInboundHandler, SessionNegotiator
Direct Known Subclasses:
DefaultPCEPSessionNegotiator

public abstract class AbstractPCEPSessionNegotiator extends AbstractSessionNegotiator
Abstract PCEP session negotiator. Takes care of basic handshake without implementing a specific policy. Policies need to be provided by a specific subclass.
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static enum 
    PCEP session negotiation state transitions are described in RFC5440.

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

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

    Fields
    Modifier and Type
    Field
    Description
    static final int
    Unified KeepWait and OpenWait timer expiration, in seconds.

    Fields inherited from class org.opendaylight.protocol.pcep.impl.AbstractSessionNegotiator

    channel, promise
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    protected
    AbstractPCEPSessionNegotiator(io.netty.util.concurrent.Promise<PCEPSession> promise, io.netty.channel.Channel channel, PcepSessionTls tlsConfiguration)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected abstract PCEPSessionImpl
    createSession(io.netty.channel.Channel channel, Open localPrefs, Open remotePrefs)
    Create the protocol session.
    protected abstract Open
    Given a peer-provided session parameters proposal which we found unacceptable, provide a counter-proposal.
    protected abstract Open
    Get the initial session parameters proposal.
    protected abstract Open
    Get the revised session parameters proposal based on the feedback the peer has provided to us.
    protected final void
     
    protected abstract boolean
    Check whether a peer-provided session parameters proposal is acceptable.
    protected void
     
    protected final void
     

    Methods inherited from class org.opendaylight.protocol.pcep.impl.AbstractSessionNegotiator

    channelActive, channelRead, exceptionCaught, negotiationSuccessful, sendMessage

    Methods inherited from class io.netty.channel.ChannelInboundHandlerAdapter

    channelInactive, channelReadComplete, channelRegistered, channelUnregistered, channelWritabilityChanged, 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

    Methods inherited from interface io.netty.channel.ChannelInboundHandler

    channelInactive, channelReadComplete, channelRegistered, channelUnregistered, channelWritabilityChanged, userEventTriggered
  • Field Details

    • FAIL_TIMER_VALUE

      public static final int FAIL_TIMER_VALUE
      Unified KeepWait and OpenWait timer expiration, in seconds.
      See Also:
  • Constructor Details

    • AbstractPCEPSessionNegotiator

      protected AbstractPCEPSessionNegotiator(io.netty.util.concurrent.Promise<PCEPSession> promise, io.netty.channel.Channel channel, PcepSessionTls tlsConfiguration)
  • Method Details

    • getInitialProposal

      protected abstract Open getInitialProposal()
      Get the initial session parameters proposal.
      Returns:
      Session parameters proposal.
    • getRevisedProposal

      protected abstract Open getRevisedProposal(Open suggestion)
      Get the revised session parameters proposal based on the feedback the peer has provided to us.
      Parameters:
      suggestion - Peer-provided suggested session parameters
      Returns:
      Session parameters proposal, or null if peers session parameters preclude us from suggesting anything
    • isProposalAcceptable

      protected abstract boolean isProposalAcceptable(Open proposal)
      Check whether a peer-provided session parameters proposal is acceptable.
      Parameters:
      proposal - peer-proposed session parameters
      Returns:
      true if the proposal is acceptable, false otherwise
    • getCounterProposal

      protected abstract Open getCounterProposal(Open proposal)
      Given a peer-provided session parameters proposal which we found unacceptable, provide a counter-proposal. The requirement is that the isProposalAcceptable() method has to return true when presented with this proposal.
      Parameters:
      proposal - unacceptable peer proposal
      Returns:
      our counter-proposal, or null if there is no way to negotiate an acceptable proposal
    • createSession

      protected abstract PCEPSessionImpl createSession(io.netty.channel.Channel channel, Open localPrefs, Open remotePrefs)
      Create the protocol session.
      Parameters:
      channel - Underlying channel.
      localPrefs - Session preferences proposed by us and accepted by the peer.
      remotePrefs - Session preferences proposed by the peer and accepted by us.
      Returns:
      New protocol session.
    • startNegotiation

      protected final void startNegotiation()
      Specified by:
      startNegotiation in class AbstractSessionNegotiator
    • handleMessage

      protected final void handleMessage(Message msg)
      Specified by:
      handleMessage in class AbstractSessionNegotiator
    • negotiationFailed

      protected void negotiationFailed(Throwable cause)
      Overrides:
      negotiationFailed in class AbstractSessionNegotiator