Class BGPSessionImpl
java.lang.Object
io.netty.channel.ChannelHandlerAdapter
io.netty.channel.ChannelInboundHandlerAdapter
io.netty.channel.SimpleChannelInboundHandler<org.opendaylight.yangtools.binding.Notification<?>>
org.opendaylight.protocol.bgp.rib.impl.BGPSessionImpl
- All Implemented Interfaces:
io.netty.channel.ChannelHandler,io.netty.channel.ChannelInboundHandler,AutoCloseable,BGPSessionStateProvider,BGPSession
public class BGPSessionImpl
extends io.netty.channel.SimpleChannelInboundHandler<org.opendaylight.yangtools.binding.Notification<?>>
implements BGPSession, BGPSessionStateProvider, AutoCloseable
-
Nested Class Summary
Nested classes/interfaces inherited from interface io.netty.channel.ChannelHandler
io.netty.channel.ChannelHandler.Sharable -
Constructor Summary
ConstructorsConstructorDescriptionBGPSessionImpl(BGPSessionListener listener, io.netty.channel.Channel channel, Open remoteOpen, int localHoldTimer, BGPPeerRegistry peerRegistry) BGPSessionImpl(BGPSessionListener listener, io.netty.channel.Channel channel, Open remoteOpen, BGPSessionPreferences localPreferences, BGPPeerRegistry peerRegistry) -
Method Summary
Modifier and TypeMethodDescription<T extends PeerConstraint>
voidaddDecoderConstraint(Class<T> constraintClass, T constraint) Add peer constraint to session pipeline decoder.protected com.google.common.base.MoreObjects.ToStringHelperaddToStringAttributes(com.google.common.base.MoreObjects.ToStringHelper toStringHelper) final voidchannelInactive(io.netty.channel.ChannelHandlerContext ctx) protected final voidchannelRead0(io.netty.channel.ChannelHandlerContext ctx, org.opendaylight.yangtools.binding.Notification<?> msg) voidclose()voidClose peer session without sending Notification message.voidexceptionCaught(io.netty.channel.ChannelHandlerContext ctx, Throwable cause) Return a list with Add Path tables supported advertised and corresponding SendReceive mode.Return advertised graceful capability containing the list of tables which the peer has advertised to support, restart time and restarting flags.Return advertised long-lived graceful capability containing the list of tables with stale time which the peer has advertised to support.Return the list of tables which the peer has advertised to support.final org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.AsNumberReturn the AS number which the peer advertises.final org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4AddressgetBgpId()Return the BGP router ID advertised by the peer.BGP Operational Session State.BGP Operational Timers State.BGP Operational Transport State.getState()final voidhandlerAdded(io.netty.channel.ChannelHandlerContext ctx) voidregisterMessagesCounter(BGPMessagesListener bgpMessagesListener) Register BGP Operational Messages State Listener.io.netty.util.concurrent.ScheduledFuture<?> Schedule a task to be executed in the context of the session handling thread.voidsetChannelExtMsgCoder(Open remoteOpen) Set the extend message coder for current channel.final StringtoString()Methods inherited from class io.netty.channel.SimpleChannelInboundHandler
acceptInboundMessage, channelReadMethods inherited from class io.netty.channel.ChannelInboundHandlerAdapter
channelActive, channelReadComplete, channelRegistered, channelUnregistered, channelWritabilityChanged, userEventTriggeredMethods inherited from class io.netty.channel.ChannelHandlerAdapter
ensureNotSharable, handlerRemoved, isSharableMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface io.netty.channel.ChannelHandler
handlerRemovedMethods inherited from interface io.netty.channel.ChannelInboundHandler
channelActive, channelRead, channelReadComplete, channelRegistered, channelUnregistered, channelWritabilityChanged, userEventTriggered
-
Constructor Details
-
BGPSessionImpl
public BGPSessionImpl(BGPSessionListener listener, io.netty.channel.Channel channel, Open remoteOpen, BGPSessionPreferences localPreferences, BGPPeerRegistry peerRegistry) -
BGPSessionImpl
public BGPSessionImpl(BGPSessionListener listener, io.netty.channel.Channel channel, Open remoteOpen, int localHoldTimer, BGPPeerRegistry peerRegistry)
-
-
Method Details
-
setChannelExtMsgCoder
Set the extend message coder for current channel. The reason for separating this part from constructor is, in #channel.pipeline().replace(..), the invokeChannelRead() will be invoked after the original message coder handler got removed. And there is chance that before the session instance is fully initiated (constructor returns), a KeepAlive message arrived already in the channel buffer. Thus #AbstractBGPSessionNegotiator.handleMessage(..) gets invoked again and a deadlock is caused. A BGP final state machine error will happen as BGP negotiator is still in OPEN_SENT state as the session constructor hasn't returned yet. -
close
public void close()- Specified by:
closein interfaceAutoCloseable
-
closeWithoutMessage
public void closeWithoutMessage()Description copied from interface:BGPSessionClose peer session without sending Notification message.- Specified by:
closeWithoutMessagein interfaceBGPSession
-
toString
-
addToStringAttributes
protected com.google.common.base.MoreObjects.ToStringHelper addToStringAttributes(com.google.common.base.MoreObjects.ToStringHelper toStringHelper) -
getAdvertisedTableTypes
Description copied from interface:BGPSessionReturn the list of tables which the peer has advertised to support.- Specified by:
getAdvertisedTableTypesin interfaceBGPSession- Returns:
- Set of tables which it supports.
-
getAdvertisedAddPathTableTypes
Description copied from interface:BGPSessionReturn a list with Add Path tables supported advertised and corresponding SendReceive mode.- Specified by:
getAdvertisedAddPathTableTypesin interfaceBGPSession- Returns:
- AddPathTables supported
-
getAdvertisedGracefulRestartCapability
Description copied from interface:BGPSessionReturn advertised graceful capability containing the list of tables which the peer has advertised to support, restart time and restarting flags.- Specified by:
getAdvertisedGracefulRestartCapabilityin interfaceBGPSession- Returns:
- Advertised graceful restart capability.
-
getAdvertisedLlGracefulRestartCapability
Description copied from interface:BGPSessionReturn advertised long-lived graceful capability containing the list of tables with stale time which the peer has advertised to support.- Specified by:
getAdvertisedLlGracefulRestartCapabilityin interfaceBGPSession- Returns:
- Advertised long-lived graceful restart capability.
-
getState
-
getBgpId
public final org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address getBgpId()Description copied from interface:BGPSessionReturn the BGP router ID advertised by the peer.- Specified by:
getBgpIdin interfaceBGPSession- Returns:
- Peer's BGP Router ID.
-
getAsNumber
public final org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.AsNumber getAsNumber()Description copied from interface:BGPSessionReturn the AS number which the peer advertises.- Specified by:
getAsNumberin interfaceBGPSession- Returns:
- Peer's AS Number
-
getLimiter
-
channelInactive
- Specified by:
channelInactivein interfaceio.netty.channel.ChannelInboundHandler- Overrides:
channelInactivein classio.netty.channel.ChannelInboundHandlerAdapter- Throws:
Exception
-
channelRead0
protected final void channelRead0(io.netty.channel.ChannelHandlerContext ctx, org.opendaylight.yangtools.binding.Notification<?> msg) - Specified by:
channelRead0in classio.netty.channel.SimpleChannelInboundHandler<org.opendaylight.yangtools.binding.Notification<?>>
-
handlerAdded
public final void handlerAdded(io.netty.channel.ChannelHandlerContext ctx) - Specified by:
handlerAddedin interfaceio.netty.channel.ChannelHandler- Overrides:
handlerAddedin classio.netty.channel.ChannelHandlerAdapter
-
exceptionCaught
- Specified by:
exceptionCaughtin interfaceio.netty.channel.ChannelHandler- Specified by:
exceptionCaughtin interfaceio.netty.channel.ChannelInboundHandler- Overrides:
exceptionCaughtin classio.netty.channel.ChannelInboundHandlerAdapter
-
getBGPSessionState
Description copied from interface:BGPSessionStateProviderBGP Operational Session State.- Specified by:
getBGPSessionStatein interfaceBGPSessionStateProvider- Returns:
- BGPSessionState
-
getBGPTimersState
Description copied from interface:BGPSessionStateProviderBGP Operational Timers State.- Specified by:
getBGPTimersStatein interfaceBGPSessionStateProvider- Returns:
- BGPTimersState
-
getBGPTransportState
Description copied from interface:BGPSessionStateProviderBGP Operational Transport State.- Specified by:
getBGPTransportStatein interfaceBGPSessionStateProvider- Returns:
- BGPTransportState
-
registerMessagesCounter
Description copied from interface:BGPSessionStateProviderRegister BGP Operational Messages State Listener.- Specified by:
registerMessagesCounterin interfaceBGPSessionStateProvider- Parameters:
bgpMessagesListener- BGPMessagesListener
-
addDecoderConstraint
Description copied from interface:BGPSessionAdd peer constraint to session pipeline decoder.- Specified by:
addDecoderConstraintin interfaceBGPSession
-
schedule
public io.netty.util.concurrent.ScheduledFuture<?> schedule(Runnable command, long delay, TimeUnit unit) Description copied from interface:BGPSessionSchedule a task to be executed in the context of the session handling thread.- Specified by:
schedulein interfaceBGPSession- Parameters:
command- the task to executedelay- the time from now to delay executionunit- the time unit of the delay parameter- Returns:
- Future representing the scheduled task.
-