Allow to configure number of threads used by Netty's EventLoopGroups
[openflowjava.git] / openflow-protocol-impl / src / main / java / org / opendaylight / yang / gen / v1 / urn / opendaylight / params / xml / ns / yang / openflow / _switch / connection / provider / impl / rev140328 / SwitchConnectionProviderModule.java
1 /**
2 * Generated file
3
4 * Generated from: yang module name: openflow-switch-connection-provider-impl  yang module local name: openflow-switch-connection-provider-impl
5 * Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator
6 * Generated at: Fri Mar 28 17:50:58 PDT 2014
7 *
8 * Do not modify this file unless it is present under src/main directory
9 */
10 package org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.openflow._switch.connection.provider.impl.rev140328;
11
12 import java.net.InetAddress;
13 import java.net.UnknownHostException;
14
15 import org.opendaylight.openflowjava.protocol.api.connection.ConnectionConfiguration;
16 import org.opendaylight.openflowjava.protocol.api.connection.ThreadConfiguration;
17 import org.opendaylight.openflowjava.protocol.api.connection.TlsConfiguration;
18 import org.opendaylight.openflowjava.protocol.impl.connection.SwitchConnectionProviderImpl;
19 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.config.rev140630.KeystoreType;
21 import org.slf4j.Logger;
22 import org.slf4j.LoggerFactory;
23
24 import com.google.common.base.Objects;
25
26 /**
27 *
28 */
29 public final class SwitchConnectionProviderModule extends org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.openflow._switch.connection.provider.impl.rev140328.AbstractSwitchConnectionProviderModule
30  {
31     
32     private static Logger LOG = LoggerFactory
33             .getLogger(SwitchConnectionProviderModule.class);
34
35     /**
36      * @param identifier
37      * @param dependencyResolver
38      */
39     public SwitchConnectionProviderModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
40         super(identifier, dependencyResolver);
41     }
42
43     /**
44      * @param identifier
45      * @param dependencyResolver
46      * @param oldModule
47      * @param oldInstance
48      */
49     public SwitchConnectionProviderModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver,
50             SwitchConnectionProviderModule oldModule, java.lang.AutoCloseable oldInstance) {
51         super(identifier, dependencyResolver, oldModule, oldInstance);
52     }
53
54     @Override
55     protected void customValidation(){
56         // Add custom validation for module attributes here.
57     }
58
59     @Override
60     public java.lang.AutoCloseable createInstance() {
61         LOG.info("SwitchConnectionProvider started.");
62         SwitchConnectionProviderImpl switchConnectionProviderImpl = new SwitchConnectionProviderImpl();
63         try {
64             ConnectionConfiguration connConfiguration = createConnectionConfiguration();
65             switchConnectionProviderImpl.setConfiguration(connConfiguration);
66         } catch (UnknownHostException e) {
67             throw new IllegalArgumentException(e.getMessage(), e);
68         }
69         return switchConnectionProviderImpl;
70     }
71
72     /**
73      * @return instance configuration object
74      * @throws UnknownHostException 
75      */
76     private ConnectionConfiguration createConnectionConfiguration() throws UnknownHostException {
77         final InetAddress address = extractIpAddressBin(getAddress());
78         final Integer port = getPort();
79         final long switchIdleTimeout = getSwitchIdleTimeout();
80         final Tls tlsConfig = getTls();
81         final Threads threads = getThreads();
82         
83         return new ConnectionConfiguration() {
84             @Override
85             public InetAddress getAddress() {
86                 return address;
87             }
88             @Override
89             public int getPort() {
90                 return port;
91             }
92             @Override
93             public Object getTransferProtocol() {
94                 // TODO Auto-generated method stub
95                 return null;
96             }
97             @Override
98             public TlsConfiguration getTlsConfiguration() {
99                 if (tlsConfig == null) {
100                     return null;
101                 }
102                 return new TlsConfiguration() {
103                     @Override
104                     public KeystoreType getTlsTruststoreType() {
105                         return Objects.firstNonNull(tlsConfig.getTruststoreType(), null);
106                     }
107                     @Override
108                     public String getTlsTruststore() {
109                         return Objects.firstNonNull(tlsConfig.getTruststore(), null);
110                     }
111                     @Override
112                     public KeystoreType getTlsKeystoreType() {
113                         return Objects.firstNonNull(tlsConfig.getKeystoreType(), null);
114                     }
115                     @Override
116                     public String getTlsKeystore() {
117                         return Objects.firstNonNull(tlsConfig.getKeystore(), null);
118                     }
119                     @Override
120                     public org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.config.rev140630.PathType getTlsKeystorePathType() {
121                         return Objects.firstNonNull(tlsConfig.getKeystorePathType(), null);
122                     }
123                     @Override
124                     public org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.config.rev140630.PathType getTlsTruststorePathType() {
125                         return Objects.firstNonNull(tlsConfig.getTruststorePathType(), null);
126                     }
127                     @Override
128                     public String getKeystorePassword() {
129                         return Objects.firstNonNull(tlsConfig.getKeystorePassword(), null);
130                     }
131                     @Override
132                     public String getCertificatePassword() {
133                         return Objects.firstNonNull(tlsConfig.getCertificatePassword(), null);
134                     }
135                     @Override
136                     public String getTruststorePassword() {
137                         return Objects.firstNonNull(tlsConfig.getTruststorePassword(), null);
138                     }
139                 };
140             }
141             @Override
142             public long getSwitchIdleTimeout() {
143                 return switchIdleTimeout;
144             }
145             @Override
146             public Object getSslContext() {
147                 // TODO Auto-generated method stub
148                 return null;
149             }
150             @Override
151             public ThreadConfiguration getThreadConfiguration() {
152                 if (threads == null) {
153                     return null;
154                 }
155                 return new ThreadConfiguration() {
156                     
157                     @Override
158                     public int getWorkerThreadCount() {
159                         return threads.getWorkerThreads();
160                     }
161                     
162                     @Override
163                     public int getBossThreadCount() {
164                         return threads.getBossThreads();
165                     }
166                 };
167             }
168         };
169     }
170
171     /**
172      * @param address
173      * @return
174      * @throws UnknownHostException 
175      */
176     private static InetAddress extractIpAddressBin(IpAddress address) throws UnknownHostException {
177         byte[] addressBin = null;
178         if (address != null) {
179             if (address.getIpv4Address() != null) {
180                 addressBin = address2bin(address.getIpv4Address().getValue());
181             } else if (address.getIpv6Address() != null) {
182                 addressBin = address2bin(address.getIpv6Address().getValue());
183             }
184         }
185         
186         if (addressBin == null) {
187             return null;
188         } else {
189             return InetAddress.getByAddress(addressBin);
190         }
191     }
192
193     /**
194      * @param value
195      * @return
196      */
197     private static byte[] address2bin(String value) {
198         //TODO: translate ipv4 or ipv6 into byte[]
199         return null;
200     }
201 }