add lib-plugin interaction implementations on library side
[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.ConnectionAdapterFactory;\r
12 import org.opendaylight.openflowjava.protocol.impl.core.TcpHandler.COMPONENT_NAMES;\r
13 \r
14 /**\r
15  * @author michal.polkorab\r
16  *\r
17  */\r
18 public class PublishingChannelInitializer extends ChannelInitializer<SocketChannel> {\r
19 \r
20     private DefaultChannelGroup allChannels;\r
21     private SwitchConnectionHandler switchConnectionHandler;\r
22     \r
23     /**\r
24      * default ctor\r
25      */\r
26     public PublishingChannelInitializer() {\r
27         allChannels = new DefaultChannelGroup("netty-receiver", null);\r
28     }\r
29     \r
30     @Override\r
31     protected void initChannel(SocketChannel ch) throws Exception {\r
32         allChannels.add(ch);\r
33         //TODO - create inBoundHandler\r
34         if (switchConnectionHandler != null) {\r
35             switchConnectionHandler.onSwitchConnected(ConnectionAdapterFactory.createConnectionAdapter(ch));\r
36             //TODO - check OpenflowProtocolListener, set it to inBoundHandler\r
37         }\r
38         ch.pipeline().addLast(COMPONENT_NAMES.TLS_DETECTOR.name(), new TlsDetector());\r
39         //TODO - chain inBoundHandler to pipe\r
40     }\r
41     \r
42     /**\r
43      * @return iterator through active connections\r
44      */\r
45     public Iterator<Channel> getConnectionIterator() {\r
46         return allChannels.iterator();\r
47     }\r
48 \r
49     /**\r
50      * @return amount of active channels\r
51      */\r
52     public int size() {\r
53         return allChannels.size();\r
54     }\r
55     \r
56     /**\r
57      * @param switchListener the switchListener to set\r
58      */\r
59     public void setSwitchConnectionHandler(SwitchConnectionHandler switchListener) {\r
60         this.switchConnectionHandler = switchListener;\r
61     }\r
62 }\r