2 * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
9 package org.opendaylight.openflowplugin.impl.device;
11 import com.google.common.base.Preconditions;
12 import javax.annotation.CheckForNull;
13 import javax.annotation.Nonnull;
14 import org.opendaylight.openflowplugin.api.openflow.device.DeviceState;
15 import org.opendaylight.openflowplugin.impl.util.DeviceStateUtil;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.FeaturesReply;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetFeaturesOutput;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetFeaturesOutputBuilder;
22 import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier;
26 * org.opendaylight.openflowplugin.impl.device
28 * DeviceState is builded from {@link FeaturesReply} and {@link NodeId}. Both values are inside
29 * {@link org.opendaylight.openflowplugin.api.openflow.connection.ConnectionContext}
31 * @author <a href="mailto:vdemcak@cisco.com">Vaclav Demcak</a>
33 * Created: Mar 29, 2015
35 class DeviceStateImpl implements DeviceState {
37 private final GetFeaturesOutput featuresOutput;
38 private final NodeId nodeId;
39 private final KeyedInstanceIdentifier<Node, NodeKey> nodeII;
40 private final short version;
41 private boolean valid;
42 private boolean meterIsAvailable;
43 private boolean groupIsAvailable;
44 private boolean deviceSynchronized;
45 private boolean flowStatisticsAvailable;
46 private boolean tableStatisticsAvailable;
47 private boolean portStatisticsAvailable;
48 private boolean statPollEnabled;
49 private boolean queueStatisticsAvailable;
51 public DeviceStateImpl(@CheckForNull final FeaturesReply featuresReply, @Nonnull final NodeId nodeId) {
52 Preconditions.checkArgument(featuresReply != null);
53 featuresOutput = new GetFeaturesOutputBuilder(featuresReply).build();
54 this.nodeId = Preconditions.checkNotNull(nodeId);
55 nodeII = DeviceStateUtil.createNodeInstanceIdentifier(nodeId);
56 version = featuresReply.getVersion();
57 statPollEnabled = false;
58 deviceSynchronized = false;
62 public NodeId getNodeId() {
67 public KeyedInstanceIdentifier<Node, NodeKey> getNodeInstanceIdentifier() {
72 public GetFeaturesOutput getFeatures() {
73 return featuresOutput;
77 public boolean isValid() {
82 public void setValid(final boolean valid) {
87 public short getVersion() {
92 public boolean isMetersAvailable() {
93 return meterIsAvailable;
97 public void setMeterAvailable(final boolean available) {
98 meterIsAvailable = available;
102 public boolean isGroupAvailable() {
103 return groupIsAvailable;
107 public void setGroupAvailable(final boolean available) {
108 groupIsAvailable = available;
112 public boolean deviceSynchronized() {
113 return deviceSynchronized;
117 public boolean isFlowStatisticsAvailable() {
118 return flowStatisticsAvailable;
122 public void setFlowStatisticsAvailable(final boolean available) {
123 flowStatisticsAvailable = available;
127 public boolean isTableStatisticsAvailable() {
128 return tableStatisticsAvailable;
132 public void setTableStatisticsAvailable(final boolean available) {
133 tableStatisticsAvailable = available;
137 public boolean isPortStatisticsAvailable() {
138 return portStatisticsAvailable;
142 public void setPortStatisticsAvailable(final boolean available) {
143 portStatisticsAvailable = available;
147 public boolean isQueueStatisticsAvailable() {
148 return queueStatisticsAvailable;
152 public void setQueueStatisticsAvailable(final boolean available) {
153 queueStatisticsAvailable = available;
158 public void setDeviceSynchronized(final boolean _deviceSynchronized) {
159 deviceSynchronized = _deviceSynchronized;
163 public boolean isStatisticsPollingEnabled() {
164 return statPollEnabled;
168 public void setStatisticsPollingEnabledProp(final boolean statPollEnabled) {
169 this.statPollEnabled = statPollEnabled;