Fixed YANG - GetAsyncReply
[openflowjava.git] / openflow-protocol-impl / src / main / java / org / opendaylight / openflowjava / protocol / impl / core / PublishingChannelInitializer.java
1 package org.opendaylight.openflowjava.protocol.impl.core;\r
2 \r
3 import io.netty.channel.Channel;\r
4 import io.netty.channel.ChannelInitializer;\r
5 import io.netty.channel.group.DefaultChannelGroup;\r
6 import io.netty.channel.socket.SocketChannel;\r
7 \r
8 import java.util.Iterator;\r
9 \r
10 import org.opendaylight.openflowjava.protocol.api.connection.SwitchConnectionHandler;\r
11 import org.opendaylight.openflowjava.protocol.impl.connection.ConnectionFacade;\r
12 import org.opendaylight.openflowjava.protocol.impl.connection.ConnectionAdapterFactory;\r
13 import org.opendaylight.openflowjava.protocol.impl.core.TcpHandler.COMPONENT_NAMES;\r
14 \r
15 /**\r
16  * @author michal.polkorab\r
17  *\r
18  */\r
19 public class PublishingChannelInitializer extends ChannelInitializer<SocketChannel> {\r
20 \r
21     private DefaultChannelGroup allChannels;\r
22     private SwitchConnectionHandler switchConnectionHandler;\r
23     \r
24     /**\r
25      * default ctor\r
26      */\r
27     public PublishingChannelInitializer() {\r
28         allChannels = new DefaultChannelGroup("netty-receiver", null);\r
29     }\r
30     \r
31     @Override\r
32     protected void initChannel(SocketChannel ch) throws Exception {\r
33         // TODO - call switchConnectionHandler accept first\r
34         allChannels.add(ch);\r
35         ConnectionFacade connectionAdapter = null;\r
36         if (switchConnectionHandler != null) {\r
37             connectionAdapter = ConnectionAdapterFactory.createConnectionAdapter(ch);\r
38             switchConnectionHandler.onSwitchConnected(connectionAdapter);\r
39         }\r
40         ch.pipeline().addLast(COMPONENT_NAMES.TLS_DETECTOR.name(), new TlsDetector());\r
41         ch.pipeline().addLast(COMPONENT_NAMES.DELEGATING_INBOUND_HANDLER.name(), new DelegatingInboundHandler(connectionAdapter));\r
42     }\r
43     \r
44     /**\r
45      * @return iterator through active connections\r
46      */\r
47     public Iterator<Channel> getConnectionIterator() {\r
48         return allChannels.iterator();\r
49     }\r
50 \r
51     /**\r
52      * @return amount of active channels\r
53      */\r
54     public int size() {\r
55         return allChannels.size();\r
56     }\r
57     \r
58     /**\r
59      * @param switchListener the switchListener to set\r
60      */\r
61     public void setSwitchConnectionHandler(SwitchConnectionHandler switchListener) {\r
62         this.switchConnectionHandler = switchListener;\r
63     }\r
64 }\r