Encapsulate OpenFlowPlugin configuration
[openflowplugin.git] / openflowplugin-impl / src / main / java / org / opendaylight / openflowplugin / impl / configuration / OpenFlowProviderConfigImpl.java
diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/configuration/OpenFlowProviderConfigImpl.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/configuration/OpenFlowProviderConfigImpl.java
new file mode 100644 (file)
index 0000000..0fc9f1d
--- /dev/null
@@ -0,0 +1,144 @@
+/*
+ * Copyright (c) 2017 Pantheon Technologies s.r.o. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.openflowplugin.impl.configuration;
+
+import org.opendaylight.openflowplugin.api.openflow.configuration.ConfigurationProperty;
+import org.opendaylight.openflowplugin.api.openflow.configuration.ConfigurationService;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.openflow.provider.config.rev160510.NonZeroUint16Type;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.openflow.provider.config.rev160510.NonZeroUint32Type;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.openflow.provider.config.rev160510.OpenflowProviderConfig;
+import org.opendaylight.yangtools.yang.binding.Augmentation;
+import org.opendaylight.yangtools.yang.binding.DataContainer;
+
+public class OpenFlowProviderConfigImpl implements OpenflowProviderConfig {
+    private final ConfigurationService service;
+
+    public OpenFlowProviderConfigImpl(final ConfigurationService service) {
+        this.service = service;
+    }
+
+    @Override
+    public NonZeroUint16Type getRpcRequestsQuota() {
+        final Integer property = service.getProperty(
+                ConfigurationProperty.RPC_REQUESTS_QUOTA.toString(),
+                Integer::valueOf);
+
+        return new NonZeroUint16Type(property);
+    }
+
+    @Override
+    public Boolean isSwitchFeaturesMandatory() {
+        return service.getProperty(ConfigurationProperty.SWITCH_FEATURES_MANDATORY.toString(), Boolean::valueOf);
+    }
+
+    @Override
+    public Long getGlobalNotificationQuota() {
+        return service.getProperty(ConfigurationProperty.GLOBAL_NOTIFICATION_QUOTA.toString(), Long::valueOf);
+    }
+
+    @Override
+    public Boolean isIsStatisticsPollingOn() {
+        return service.getProperty(ConfigurationProperty.IS_STATISTICS_POLLING_ON.toString(), Boolean::valueOf);
+    }
+
+    @Override
+    public Boolean isIsStatisticsRpcEnabled() {
+        return service.getProperty(ConfigurationProperty.IS_STATISTICS_RPC_ENABLED.toString(), Boolean::valueOf);
+    }
+
+    @Override
+    public NonZeroUint32Type getBarrierIntervalTimeoutLimit() {
+        final Long property = service.getProperty(
+                ConfigurationProperty.BARRIER_INTERVAL_TIMEOUT_LIMIT.toString(),
+                Long::valueOf);
+
+        return new NonZeroUint32Type(property);
+    }
+
+    @Override
+    public NonZeroUint16Type getBarrierCountLimit() {
+        final Integer property = service.getProperty(
+                ConfigurationProperty.BARRIER_COUNT_LIMIT.toString(),
+                Integer::valueOf);
+
+        return new NonZeroUint16Type(property);
+    }
+
+    @Override
+    public NonZeroUint32Type getEchoReplyTimeout() {
+        final Long property = service.getProperty(
+                ConfigurationProperty.ECHO_REPLY_TIMEOUT.toString(),
+                Long::valueOf);
+
+        return new NonZeroUint32Type(property);
+    }
+
+    @Override
+    public Integer getThreadPoolMinThreads() {
+        return service.getProperty(ConfigurationProperty.THREAD_POOL_MIN_THREADS.toString(), Integer::valueOf);
+    }
+
+    @Override
+    public NonZeroUint16Type getThreadPoolMaxThreads() {
+        final Integer property = service.getProperty(
+                ConfigurationProperty.THREAD_POOL_MAX_THREADS.toString(),
+                Integer::valueOf);
+
+        return new NonZeroUint16Type(property);
+    }
+
+    @Override
+    public Long getThreadPoolTimeout() {
+        return service.getProperty(ConfigurationProperty.THREAD_POOL_TIMEOUT.toString(), Long::valueOf);
+    }
+
+    @Override
+    public Boolean isEnableFlowRemovedNotification() {
+        return service.getProperty(ConfigurationProperty.ENABLE_FLOW_REMOVED_NOTIFICATION.toString(), Boolean::valueOf);
+    }
+
+    @Override
+    public Boolean isSkipTableFeatures() {
+        return service.getProperty(ConfigurationProperty.SKIP_TABLE_FEATURES.toString(), Boolean::valueOf);
+    }
+
+    @Override
+    public NonZeroUint32Type getBasicTimerDelay() {
+        final Long property = service.getProperty(
+                ConfigurationProperty.BASIC_TIMER_DELAY.toString(),
+                Long::valueOf);
+
+        return new NonZeroUint32Type(property);
+    }
+
+    @Override
+    public NonZeroUint32Type getMaximumTimerDelay() {
+        final Long property = service.getProperty(
+                ConfigurationProperty.MAXIMUM_TIMER_DELAY.toString(),
+                Long::valueOf);
+
+        return new NonZeroUint32Type(property);
+    }
+
+    @Override
+    public Boolean isUseSingleLayerSerialization() {
+        return service.getProperty(ConfigurationProperty.USE_SINGLE_LAYER_SERIALIZATION.toString(), Boolean::valueOf);
+    }
+
+    @Override
+    public <E extends Augmentation<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.openflow.provider.config.rev160510.OpenflowProviderConfig>> E getAugmentation(java.lang.Class<E> augmentationType) {
+        return null;
+    }
+
+    @Override
+    public Class<? extends DataContainer> getImplementedInterface() {
+        return OpenflowProviderConfig.class;
+    }
+
+}