Class ConnectionAdapterImpl
java.lang.Object
org.opendaylight.openflowjava.protocol.impl.core.connection.ConnectionAdapterImpl
- All Implemented Interfaces:
ConnectionAdapter,ConnectionFacade,MessageConsumer,OpenflowProtocolService,org.opendaylight.yangtools.yang.binding.RpcService
Handles messages (notifications + rpcs) and connections.
- Author:
- mirehak, michal.polkorab
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final InetSocketAddressprotected final io.netty.channel.Channelprotected booleanprotected final org.opendaylight.openflowjava.protocol.impl.core.connection.ChannelOutboundQueueprotected static final com.google.common.cache.RemovalListener<RpcResponseKey,org.opendaylight.openflowjava.protocol.impl.core.connection.ResponseExpectedRpcListener<?>> protected com.google.common.cache.Cache<RpcResponseKey,org.opendaylight.openflowjava.protocol.impl.core.connection.ResponseExpectedRpcListener<?>> expiring cache for future rpcResponses. -
Constructor Summary
ConstructorsConstructorDescriptionConnectionAdapterImpl(io.netty.channel.Channel channel, InetSocketAddress address, boolean useBarrier, int channelOutboundQueueSize) Default constructor. -
Method Summary
Modifier and TypeMethodDescriptioncom.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<BarrierOutput>>barrier(BarrierInput input) InvokebarrierRPC.voidThrows exception if any of required listeners is missing.voidconsume(org.opendaylight.yangtools.yang.binding.DataObject message) Invoked to consume a message.voidconsumeDeviceMessage(org.opendaylight.yangtools.yang.binding.DataObject message) Method is equivalent toMessageConsumer.consume(DataObject)to prevent missing method in every children ofAbstractConnectionAdapterStatisticsclass, because we overriding original method forStatisticsCounters.Disconnect corresponding switch.com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<EchoOutput>>InvokeechoRPC.com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<EchoReplyOutput>>echoReply(EchoReplyInput input) Invokeecho-replyRPC.com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<ExperimenterOutput>>experimenter(ExperimenterInput input) InvokeexperimenterRPC.protected org.opendaylight.openflowjava.protocol.impl.core.connection.ResponseExpectedRpcListener<?>Return cached RpcListener ornullif not cached.voidNotify listener about connection ready-to-use event.com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<FlowModOutput>>flowMod(FlowModInput input) Invokeflow-modRPC.com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<GetAsyncOutput>>getAsync(GetAsyncInput input) Invokeget-asyncRPC.com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<GetConfigOutput>>getConfig(GetConfigInput input) Invokeget-configRPC.com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<GetFeaturesOutput>>getFeatures(GetFeaturesInput input) Invokeget-featuresRPC.com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<GetQueueConfigOutput>>Invokeget-queue-configRPC.Returns the address of the connected switch.com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<GroupModOutput>>groupMod(GroupModInput input) Invokegroup-modRPC.com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<HelloOutput>>hello(HelloInput input) InvokehelloRPC.booleanisAlive()Determines if the connection to the switch is alive.booleanDetermines if the channel is configured to auto-read.com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<MeterModOutput>>meterMod(MeterModInput input) Invokemeter-modRPC.com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<MultipartRequestOutput>>Invokemultipart-requestRPC.voidonSwitchCertificateIdentified(List<X509Certificate> certificateChain) Notify listener about switch certificate information.com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<PacketOutOutput>>packetOut(PacketOutInput input) Invokepacket-outRPC.com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<PortModOutput>>portMod(PortModInput input) Invokeport-modRPC.<T extends OutboundQueueHandler>
OutboundQueueHandlerRegistration<T>registerOutboundQueueHandler(T handler, int maxQueueDepth, long maxBarrierNanos) Registers a new bypass outbound queue.com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<RoleRequestOutput>>roleRequest(RoleRequestInput input) Invokerole-requestRPC.protected <I extends OfHeader,O extends OfHeader>
com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<O>>sendToSwitchExpectRpcResultFuture(I input, Class<O> responseClazz, String failureInfo) Sends given message to switch, sending result or switch response will be reported via return value.protected <O extends org.opendaylight.yangtools.yang.binding.DataObject>
com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<O>>sendToSwitchFuture(Object input, String failureInfo) Sends given message to switch, sending result will be reported via return value.voidsetAlienMessageListener(AlienMessageListener alienMessageListener) Set handler for alien messages received from device.com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<SetAsyncOutput>>setAsync(SetAsyncInput input) Invokeset-asyncRPC.voidsetAutoRead(boolean autoRead) Sets option for automatic channel reading - if set to false, incoming messages won't be read.com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<SetConfigOutput>>setConfig(SetConfigInput input) Invokeset-configRPC.voidsetConnectionReadyListener(ConnectionReadyListener connectionReadyListener) Set listener for connection became ready-to-use event.voidsetDatapathId(BigInteger datapathId) Set datapathId for the dpn.voidsetExecutorService(ExecutorService executorService) Sets executorService.voidsetMessageListener(OpenflowProtocolListener messageListener) Sets the protocol message listener.voidsetPacketInFiltering(boolean enabled) Set filtering of PacketIn messages.voidsetSystemListener(SystemNotificationsListener systemListener) Sets the system message listener.com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<TableModOutput>>tableMod(TableModInput input) Invoketable-modRPC.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.opendaylight.openflowjava.protocol.api.connection.ConnectionAdapter
disconnect, getRemoteAddress, isAlive, isAutoRead, setAutoReadMethods inherited from interface org.opendaylight.openflowjava.protocol.impl.core.connection.MessageConsumer
consumeMethods inherited from interface org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OpenflowProtocolService
barrier, echo, echoReply, experimenter, flowMod, getAsync, getConfig, getFeatures, getQueueConfig, groupMod, hello, meterMod, multipartRequest, packetOut, portMod, roleRequest, setAsync, setConfig, tableMod
-
Field Details
-
REMOVAL_LISTENER
protected static final com.google.common.cache.RemovalListener<RpcResponseKey,org.opendaylight.openflowjava.protocol.impl.core.connection.ResponseExpectedRpcListener<?>> REMOVAL_LISTENER -
channel
protected final io.netty.channel.Channel channel -
address
-
disconnectOccured
protected boolean disconnectOccured -
output
protected final org.opendaylight.openflowjava.protocol.impl.core.connection.ChannelOutboundQueue output -
responseCache
protected com.google.common.cache.Cache<RpcResponseKey,org.opendaylight.openflowjava.protocol.impl.core.connection.ResponseExpectedRpcListener<?>> responseCacheexpiring cache for future rpcResponses.
-
-
Constructor Details
-
ConnectionAdapterImpl
public ConnectionAdapterImpl(io.netty.channel.Channel channel, InetSocketAddress address, boolean useBarrier, int channelOutboundQueueSize) Default constructor.- Parameters:
channel- the channel to be set - used for communicationaddress- client address (used only in case of UDP communication, as there is no need to store address over tcp (stable channel))useBarrier- value is configurable by configSubsytem
-
-
Method Details
-
setMessageListener
Description copied from interface:ConnectionAdapterSets the protocol message listener.- Specified by:
setMessageListenerin interfaceConnectionAdapter- Parameters:
messageListener- here will be pushed all messages from switch
-
setConnectionReadyListener
Description copied from interface:ConnectionAdapterSet listener for connection became ready-to-use event.- Specified by:
setConnectionReadyListenerin interfaceConnectionAdapter- Parameters:
connectionReadyListener- listens to connection ready event
-
setSystemListener
Description copied from interface:ConnectionAdapterSets the system message listener.- Specified by:
setSystemListenerin interfaceConnectionAdapter- Parameters:
systemListener- here will be pushed all system messages from library
-
setAlienMessageListener
Description copied from interface:ConnectionAdapterSet handler for alien messages received from device.- Specified by:
setAlienMessageListenerin interfaceConnectionAdapter- Parameters:
alienMessageListener- here will be pushed all alien messages from switch
-
consumeDeviceMessage
public void consumeDeviceMessage(org.opendaylight.yangtools.yang.binding.DataObject message) Method is equivalent toMessageConsumer.consume(DataObject)to prevent missing method in every children ofAbstractConnectionAdapterStatisticsclass, because we overriding original method forStatisticsCounters.- Parameters:
message- from device to processing
-
checkListeners
public void checkListeners()Description copied from interface:ConnectionAdapterThrows exception if any of required listeners is missing.- Specified by:
checkListenersin interfaceConnectionAdapter
-
fireConnectionReadyNotification
public void fireConnectionReadyNotification()Description copied from interface:ConnectionAdapterNotify listener about connection ready-to-use event.- Specified by:
fireConnectionReadyNotificationin interfaceConnectionAdapter
-
onSwitchCertificateIdentified
Description copied from interface:ConnectionAdapterNotify listener about switch certificate information.- Specified by:
onSwitchCertificateIdentifiedin interfaceConnectionAdapter- Parameters:
certificateChain- X509 certificate chain presented by the switch
-
registerOutboundQueueHandler
public <T extends OutboundQueueHandler> OutboundQueueHandlerRegistration<T> registerOutboundQueueHandler(T handler, int maxQueueDepth, long maxBarrierNanos) Description copied from interface:ConnectionAdapterRegisters a new bypass outbound queue.- Specified by:
registerOutboundQueueHandlerin interfaceConnectionAdapter- Type Parameters:
T- handler type- Parameters:
handler- queue handlermaxQueueDepth- max amount of not confirmed messaged in queue (i.e. edge for barrier message)maxBarrierNanos- regular base for barrier message- Returns:
- An
OutboundQueueHandlerRegistration
-
setPacketInFiltering
public void setPacketInFiltering(boolean enabled) Description copied from interface:ConnectionAdapterSet filtering of PacketIn messages. By default these messages are not filtered.- Specified by:
setPacketInFilteringin interfaceConnectionAdapter- Parameters:
enabled- True if PacketIn messages should be filtered, false if they should be reported.
-
setDatapathId
Description copied from interface:ConnectionAdapterSet datapathId for the dpn.- Specified by:
setDatapathIdin interfaceConnectionAdapter- Parameters:
datapathId- of the dpn
-
setExecutorService
Description copied from interface:ConnectionAdapterSets executorService.- Specified by:
setExecutorServicein interfaceConnectionAdapter- Parameters:
executorService- for all dpns
-
flowMod
public com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<FlowModOutput>> flowMod(FlowModInput input) Description copied from interface:OpenflowProtocolServiceInvokeflow-modRPC.- Specified by:
flowModin interfaceOpenflowProtocolService- Parameters:
input- offlow-mod- Returns:
- output of
flow-mod
-
sendToSwitchExpectRpcResultFuture
protected <I extends OfHeader,O extends OfHeader> com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<O>> sendToSwitchExpectRpcResultFuture(I input, Class<O> responseClazz, String failureInfo) Sends given message to switch, sending result or switch response will be reported via return value.- Parameters:
input- message to sendresponseClazz- type of responsefailureInfo- describes, what type of message caused failure by sending- Returns:
- future object,
- if send fails,
RpcResultwill contain errors and failed status - else
RpcResultwill be stored in responseCache and wait for particular timeout (AbstractConnectionAdapter.RPC_RESPONSE_EXPIRATION),- either switch will manage to answer and then corresponding response message will be set into returned future
- or response in cache will expire and returned future will be cancelled
- if send fails,
-
sendToSwitchFuture
protected <O extends org.opendaylight.yangtools.yang.binding.DataObject> com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<O>> sendToSwitchFuture(Object input, String failureInfo) Sends given message to switch, sending result will be reported via return value.- Parameters:
input- message to sendfailureInfo- describes, what type of message caused failure by sending- Returns:
- future object,
- if send successful,
RpcResultwithout errors and successful status will be returned, - else
RpcResultwill contain errors and failed status
- if send successful,
-
consume
public void consume(org.opendaylight.yangtools.yang.binding.DataObject message) Description copied from interface:MessageConsumerInvoked to consume a message.- Specified by:
consumein interfaceMessageConsumer- Parameters:
message- to process
-
disconnect
Description copied from interface:ConnectionAdapterDisconnect corresponding switch.- Specified by:
disconnectin interfaceConnectionAdapter- Returns:
- future set to true, when disconnect completed
-
barrier
public com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<BarrierOutput>> barrier(BarrierInput input) Description copied from interface:OpenflowProtocolServiceInvokebarrierRPC.- Specified by:
barrierin interfaceOpenflowProtocolService- Parameters:
input- ofbarrier- Returns:
- output of
barrier
-
echo
public com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<EchoOutput>> echo(EchoInput input) Description copied from interface:OpenflowProtocolServiceInvokeechoRPC.- Specified by:
echoin interfaceOpenflowProtocolService- Parameters:
input- ofecho- Returns:
- output of
echo
-
echoReply
public com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<EchoReplyOutput>> echoReply(EchoReplyInput input) Description copied from interface:OpenflowProtocolServiceInvokeecho-replyRPC.- Specified by:
echoReplyin interfaceOpenflowProtocolService- Parameters:
input- ofecho-reply- Returns:
- output of
echo-reply
-
experimenter
public com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<ExperimenterOutput>> experimenter(ExperimenterInput input) Description copied from interface:OpenflowProtocolServiceInvokeexperimenterRPC.Send experimenter message to device, reply is not solicitated.- Specified by:
experimenterin interfaceOpenflowProtocolService- Parameters:
input- ofexperimenter- Returns:
- output of
experimenter
-
getConfig
public com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<GetConfigOutput>> getConfig(GetConfigInput input) Description copied from interface:OpenflowProtocolServiceInvokeget-configRPC.- Specified by:
getConfigin interfaceOpenflowProtocolService- Parameters:
input- ofget-config- Returns:
- output of
get-config
-
getFeatures
public com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<GetFeaturesOutput>> getFeatures(GetFeaturesInput input) Description copied from interface:OpenflowProtocolServiceInvokeget-featuresRPC.- Specified by:
getFeaturesin interfaceOpenflowProtocolService- Parameters:
input- ofget-features- Returns:
- output of
get-features
-
getQueueConfig
public com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<GetQueueConfigOutput>> getQueueConfig(GetQueueConfigInput input) Description copied from interface:OpenflowProtocolServiceInvokeget-queue-configRPC.- Specified by:
getQueueConfigin interfaceOpenflowProtocolService- Parameters:
input- ofget-queue-config- Returns:
- output of
get-queue-config
-
groupMod
public com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<GroupModOutput>> groupMod(GroupModInput input) Description copied from interface:OpenflowProtocolServiceInvokegroup-modRPC.- Specified by:
groupModin interfaceOpenflowProtocolService- Parameters:
input- ofgroup-mod- Returns:
- output of
group-mod
-
hello
public com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<HelloOutput>> hello(HelloInput input) Description copied from interface:OpenflowProtocolServiceInvokehelloRPC.- Specified by:
helloin interfaceOpenflowProtocolService- Parameters:
input- ofhello- Returns:
- output of
hello
-
meterMod
public com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<MeterModOutput>> meterMod(MeterModInput input) Description copied from interface:OpenflowProtocolServiceInvokemeter-modRPC.- Specified by:
meterModin interfaceOpenflowProtocolService- Parameters:
input- ofmeter-mod- Returns:
- output of
meter-mod
-
packetOut
public com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<PacketOutOutput>> packetOut(PacketOutInput input) Description copied from interface:OpenflowProtocolServiceInvokepacket-outRPC.- Specified by:
packetOutin interfaceOpenflowProtocolService- Parameters:
input- ofpacket-out- Returns:
- output of
packet-out
-
multipartRequest
public com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<MultipartRequestOutput>> multipartRequest(MultipartRequestInput input) Description copied from interface:OpenflowProtocolServiceInvokemultipart-requestRPC.- Specified by:
multipartRequestin interfaceOpenflowProtocolService- Parameters:
input- ofmultipart-request- Returns:
- output of
multipart-request
-
portMod
public com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<PortModOutput>> portMod(PortModInput input) Description copied from interface:OpenflowProtocolServiceInvokeport-modRPC.- Specified by:
portModin interfaceOpenflowProtocolService- Parameters:
input- ofport-mod- Returns:
- output of
port-mod
-
roleRequest
public com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<RoleRequestOutput>> roleRequest(RoleRequestInput input) Description copied from interface:OpenflowProtocolServiceInvokerole-requestRPC.- Specified by:
roleRequestin interfaceOpenflowProtocolService- Parameters:
input- ofrole-request- Returns:
- output of
role-request
-
setConfig
public com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<SetConfigOutput>> setConfig(SetConfigInput input) Description copied from interface:OpenflowProtocolServiceInvokeset-configRPC.- Specified by:
setConfigin interfaceOpenflowProtocolService- Parameters:
input- ofset-config- Returns:
- output of
set-config
-
tableMod
public com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<TableModOutput>> tableMod(TableModInput input) Description copied from interface:OpenflowProtocolServiceInvoketable-modRPC.- Specified by:
tableModin interfaceOpenflowProtocolService- Parameters:
input- oftable-mod- Returns:
- output of
table-mod
-
getAsync
public com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<GetAsyncOutput>> getAsync(GetAsyncInput input) Description copied from interface:OpenflowProtocolServiceInvokeget-asyncRPC.- Specified by:
getAsyncin interfaceOpenflowProtocolService- Parameters:
input- ofget-async- Returns:
- output of
get-async
-
setAsync
public com.google.common.util.concurrent.ListenableFuture<org.opendaylight.yangtools.yang.common.RpcResult<SetAsyncOutput>> setAsync(SetAsyncInput input) Description copied from interface:OpenflowProtocolServiceInvokeset-asyncRPC.- Specified by:
setAsyncin interfaceOpenflowProtocolService- Parameters:
input- ofset-async- Returns:
- output of
set-async
-
isAlive
public boolean isAlive()Description copied from interface:ConnectionAdapterDetermines if the connection to the switch is alive.- Specified by:
isAlivein interfaceConnectionAdapter- Returns:
- true, if connection to switch is alive
-
isAutoRead
public boolean isAutoRead()Description copied from interface:ConnectionAdapterDetermines if the channel is configured to auto-read.- Specified by:
isAutoReadin interfaceConnectionAdapter- Returns:
- true, if channel is configured to auto-read
-
setAutoRead
public void setAutoRead(boolean autoRead) Description copied from interface:ConnectionAdapterSets option for automatic channel reading - if set to false, incoming messages won't be read.- Specified by:
setAutoReadin interfaceConnectionAdapter- Parameters:
autoRead- target value to be switched to
-
getRemoteAddress
Description copied from interface:ConnectionAdapterReturns the address of the connected switch.- Specified by:
getRemoteAddressin interfaceConnectionAdapter- Returns:
- address of the remote end - address of a switch if connected
-
findRpcResponse
protected org.opendaylight.openflowjava.protocol.impl.core.connection.ResponseExpectedRpcListener<?> findRpcResponse(RpcResponseKey key) Return cached RpcListener ornullif not cached.
-