* @author michal.polkorab
*/
@Component(service = SwitchConnectionProvider.class, factory = SwitchConnectionProviderImpl.FACTORY_NAME)
-public class SwitchConnectionProviderImpl implements SwitchConnectionProvider, ConnectionInitializer {
+public class SwitchConnectionProviderImpl implements SwitchConnectionProvider, ConnectionInitializer, AutoCloseable {
private static final Logger LOG = LoggerFactory.getLogger(SwitchConnectionProviderImpl.class);
private static final String THREAD_NAME_PREFIX = "OFP-SwitchConnectionProvider-Udp/TcpHandler";
"org.opendaylight.openflowjava.protocol.impl.core.SwitchConnectionProviderImpl";
public static final String PROP_CONFIG = ".config";
- private SwitchConnectionHandler switchConnectionHandler;
- private ServerFacade serverFacade;
private final ConnectionConfiguration connConfig;
private final SerializationFactory serializationFactory;
private final SerializerRegistry serializerRegistry;
private final String threadName;
private TcpConnectionInitializer connectionInitializer;
+ private ServerFacade serverFacade;
// FIXME: clean this up when no longer needed
private final ServiceRegistration diagReg;
this(diagStatus, new ConnectionConfigurationImpl((SwitchConnectionConfig) props.get(PROP_CONFIG)));
}
+ @Override
@Deactivate
- void deactivate() {
+ public void close() {
+ shutdown();
diagReg.close();
}
return config == null ? "-null-config" : "_" + config.getPort();
}
- @Override
- public void setSwitchConnectionHandler(final SwitchConnectionHandler switchConnectionHandler) {
- LOG.debug("setSwitchConnectionHandler");
- this.switchConnectionHandler = switchConnectionHandler;
- }
-
@Override
public ListenableFuture<Boolean> shutdown() {
LOG.debug("Shutdown summoned");
@Override
@SuppressWarnings("checkstyle:IllegalCatch")
- public ListenableFuture<Void> startup() {
+ public ListenableFuture<Void> startup(final SwitchConnectionHandler connectionHandler) {
LOG.debug("Startup summoned");
+ if (connConfig == null) {
+ return Futures.immediateFailedFuture(new IllegalStateException("Connection not configured"));
+ }
+ if (connectionHandler == null) {
+ return Futures.immediateFailedFuture(new IllegalStateException("SwitchConnectionHandler is not set"));
+ }
+
try {
- serverFacade = createAndConfigureServer();
- if (switchConnectionHandler == null) {
- throw new IllegalStateException("SwitchConnectionHandler is not set");
- }
+ serverFacade = createAndConfigureServer(connectionHandler);
Futures.addCallback(listeningExecutorService.submit(serverFacade), new FutureCallback<Object>() {
@Override
public void onFailure(final Throwable throwable) {
}
}
- private ServerFacade createAndConfigureServer() {
+ private ServerFacade createAndConfigureServer(final SwitchConnectionHandler connectionHandler) {
LOG.debug("Configuring ..");
- if (connConfig == null) {
- throw new IllegalStateException("Connection not configured");
- }
final var transportProtocol = (TransportProtocol) connConfig.getTransferProtocol();
if (transportProtocol == null) {
throw new IllegalStateException("No transport protocol received in " + connConfig);
}
final var factory = new ChannelInitializerFactory();
- factory.setSwitchConnectionHandler(switchConnectionHandler);
+ factory.setSwitchConnectionHandler(connectionHandler);
factory.setSwitchIdleTimeout(connConfig.getSwitchIdleTimeout());
factory.setTlsConfig(connConfig.getTlsConfiguration());
factory.setSerializationFactory(serializationFactory);
return serverFacade;
}
- @Override
- public void close() {
- shutdown();
- }
-
@Override
public boolean unregisterSerializer(final ExperimenterSerializerKey key) {
return serializerRegistry.unregisterSerializer((MessageTypeKey<?>) key);