2 * Copyright (c) 2013 Pantheon Technologies s.r.o. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.openflowjava.protocol.api.connection;
10 import com.google.common.annotations.Beta;
11 import java.math.BigInteger;
12 import java.net.InetSocketAddress;
13 import java.security.cert.X509Certificate;
14 import java.util.concurrent.ExecutorService;
15 import java.util.concurrent.Future;
16 import org.opendaylight.openflowjava.protocol.api.extensibility.AlienMessageListener;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OpenflowProtocolListener;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OpenflowProtocolService;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.system.rev130927.SystemNotificationsListener;
22 * Manages a switch connection.
25 * @author michal.polkorab
27 public interface ConnectionAdapter extends OpenflowProtocolService {
30 * Disconnect corresponding switch.
32 * @return future set to true, when disconnect completed
34 Future<Boolean> disconnect();
37 * Determines if the connection to the switch is alive.
39 * @return true, if connection to switch is alive
44 * Returns the address of the connected switch.
46 * @return address of the remote end - address of a switch if connected
48 InetSocketAddress getRemoteAddress();
51 * Sets the protocol message listener.
53 * @param messageListener here will be pushed all messages from switch
55 void setMessageListener(OpenflowProtocolListener messageListener);
58 * Sets the system message listener.
60 * @param systemListener here will be pushed all system messages from library
62 void setSystemListener(SystemNotificationsListener systemListener);
65 * Set handler for alien messages received from device.
67 * @param alienMessageListener here will be pushed all alien messages from switch
69 void setAlienMessageListener(AlienMessageListener alienMessageListener);
72 * Throws exception if any of required listeners is missing.
74 void checkListeners();
77 * Notify listener about connection ready-to-use event.
79 void fireConnectionReadyNotification();
82 * Notify listener about switch certificate information.
83 * @param switchcertificate X509Certificate of switch
85 void onSwitchCertificateIdentified(X509Certificate switchcertificate);
88 * Set listener for connection became ready-to-use event.
90 * @param connectionReadyListener listens to connection ready event
92 void setConnectionReadyListener(ConnectionReadyListener connectionReadyListener);
95 * Sets option for automatic channel reading - if set to false, incoming messages won't be read.
97 * @param autoRead target value to be switched to
99 void setAutoRead(boolean autoRead);
102 * Determines if the channel is configured to auto-read.
104 * @return true, if channel is configured to auto-read
106 boolean isAutoRead();
109 * Registers a new bypass outbound queue.
111 * @param <T> handler type
112 * @param handler queue handler
113 * @param maxQueueDepth max amount of not confirmed messaged in queue (i.e. edge for barrier message)
114 * @param maxBarrierNanos regular base for barrier message
115 * @return An {@link OutboundQueueHandlerRegistration}
118 <T extends OutboundQueueHandler> OutboundQueueHandlerRegistration<T> registerOutboundQueueHandler(T handler,
119 int maxQueueDepth, long maxBarrierNanos);
122 * Set filtering of PacketIn messages. By default these messages are not filtered.
123 * @param enabled True if PacketIn messages should be filtered, false if they should be reported.
126 void setPacketInFiltering(boolean enabled);
129 * Set datapathId for the dpn.
130 * @param datapathId of the dpn
132 void setDatapathId(BigInteger datapathId);
135 * Sets executorService.
136 * @param executorService for all dpns
138 void setExecutorService(ExecutorService executorService);