1 /* Copyright (C)2013 Pantheon Technologies, s.r.o. All rights reserved. */
3 package org.opendaylight.openflowjava.protocol.impl.clients;
5 import io.netty.channel.ChannelInitializer;
6 import io.netty.channel.ChannelPipeline;
7 import io.netty.channel.socket.SocketChannel;
8 import io.netty.handler.ssl.SslHandler;
10 import javax.net.ssl.SSLEngine;
12 import org.opendaylight.openflowjava.protocol.impl.core.SslContextFactory;
14 import com.google.common.util.concurrent.SettableFuture;
16 /** Initializes secured {@link SimpleClient} pipeline
18 * @author michal.polkorab
20 public class SimpleClientInitializer extends ChannelInitializer<SocketChannel> {
22 private SettableFuture<Boolean> isOnlineFuture;
23 private boolean secured;
24 private ScenarioHandler scenarioHandler;
27 * @param isOnlineFuture future notifier of connected channel
29 public SimpleClientInitializer(SettableFuture<Boolean> isOnlineFuture, boolean secured) {
30 this.isOnlineFuture = isOnlineFuture;
31 this.secured = secured;
35 public void initChannel(SocketChannel ch) throws Exception {
36 ChannelPipeline pipeline = ch.pipeline();
38 SSLEngine engine = SslContextFactory.getClientContext()
40 engine.setUseClientMode(true);
41 pipeline.addLast("ssl", new SslHandler(engine));
43 SimpleClientHandler simpleClientHandler = new SimpleClientHandler(isOnlineFuture, scenarioHandler);
44 simpleClientHandler.setScenario(scenarioHandler);
45 pipeline.addLast("handler", simpleClientHandler);
46 isOnlineFuture = null;
50 public void setScenario(ScenarioHandler scenarioHandler) {
51 this.scenarioHandler = scenarioHandler;