16864cd33978183ee249314dbfa55eca8800c892
[openflowplugin.git] / openflowplugin-impl / src / main / java / org / opendaylight / openflowplugin / impl / device / DeviceStateImpl.java
1 /**
2  * Copyright (c) 2015 Cisco Systems, Inc. and others.  All rights reserved.
3  *
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
7  */
8
9 package org.opendaylight.openflowplugin.impl.device;
10
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.yang.gen.v1.urn.opendaylight.role.service.rev150727.OfpRole;
23 import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier;
24
25 /**
26  * openflowplugin-impl
27  * org.opendaylight.openflowplugin.impl.device
28  * <p/>
29  * DeviceState is builded from {@link FeaturesReply} and {@link NodeId}. Both values are inside
30  * {@link org.opendaylight.openflowplugin.api.openflow.connection.ConnectionContext}
31  *
32  * @author <a href="mailto:vdemcak@cisco.com">Vaclav Demcak</a>
33  *         <p/>
34  *         Created: Mar 29, 2015
35  */
36 class DeviceStateImpl implements DeviceState {
37
38     private final GetFeaturesOutput featuresOutput;
39     private final NodeId nodeId;
40     private final KeyedInstanceIdentifier<Node, NodeKey> nodeII;
41     private final short version;
42     private boolean valid;
43     private boolean meterIsAvailable;
44     private boolean groupIsAvailable;
45     private boolean deviceSynchronized;
46     private boolean flowStatisticsAvailable;
47     private boolean tableStatisticsAvailable;
48     private boolean portStatisticsAvailable;
49     private boolean statPollEnabled;
50     private boolean queueStatisticsAvailable;
51
52     public DeviceStateImpl(@CheckForNull final FeaturesReply featuresReply, @Nonnull final NodeId nodeId) {
53         Preconditions.checkArgument(featuresReply != null);
54         featuresOutput = new GetFeaturesOutputBuilder(featuresReply).build();
55         this.nodeId = Preconditions.checkNotNull(nodeId);
56         nodeII = DeviceStateUtil.createNodeInstanceIdentifier(nodeId);
57         version = featuresReply.getVersion();
58         statPollEnabled = false;
59         deviceSynchronized = false;
60     }
61
62     @Override
63     public NodeId getNodeId() {
64         return nodeId;
65     }
66
67     @Override
68     public KeyedInstanceIdentifier<Node, NodeKey> getNodeInstanceIdentifier() {
69         return nodeII;
70     }
71
72     @Override
73     public GetFeaturesOutput getFeatures() {
74         return featuresOutput;
75     }
76
77     @Override
78     public boolean isValid() {
79         return valid;
80     }
81
82     @Override
83     public void setValid(final boolean valid) {
84         this.valid = valid;
85     }
86
87     @Override
88     public short getVersion() {
89         return version;
90     }
91
92     @Override
93     public boolean isMetersAvailable() {
94         return meterIsAvailable;
95     }
96
97     @Override
98     public void setMeterAvailable(final boolean available) {
99         meterIsAvailable = available;
100     }
101
102     @Override
103     public boolean isGroupAvailable() {
104         return groupIsAvailable;
105     }
106
107     @Override
108     public void setGroupAvailable(final boolean available) {
109         groupIsAvailable = available;
110     }
111
112     @Override
113     public boolean deviceSynchronized() {
114         return deviceSynchronized;
115     }
116
117     @Override
118     public boolean isFlowStatisticsAvailable() {
119         return flowStatisticsAvailable;
120     }
121
122     @Override
123     public void setFlowStatisticsAvailable(final boolean available) {
124         flowStatisticsAvailable = available;
125     }
126
127     @Override
128     public boolean isTableStatisticsAvailable() {
129         return tableStatisticsAvailable;
130     }
131
132     @Override
133     public void setTableStatisticsAvailable(final boolean available) {
134         tableStatisticsAvailable = available;
135     }
136
137     @Override
138     public boolean isPortStatisticsAvailable() {
139         return portStatisticsAvailable;
140     }
141
142     @Override
143     public void setPortStatisticsAvailable(final boolean available) {
144         portStatisticsAvailable = available;
145     }
146
147     @Override
148     public boolean isQueueStatisticsAvailable() {
149         return queueStatisticsAvailable;
150     }
151
152     @Override
153     public void setQueueStatisticsAvailable(final boolean available) {
154         queueStatisticsAvailable = available;
155
156     }
157
158     @Override
159     public void setDeviceSynchronized(final boolean _deviceSynchronized) {
160         deviceSynchronized = _deviceSynchronized;
161     }
162
163     @Override
164     public boolean isStatisticsPollingEnabled() {
165         return statPollEnabled;
166     }
167
168     @Override
169     public void setStatisticsPollingEnabledProp(final boolean statPollEnabled) {
170         this.statPollEnabled = statPollEnabled;
171     }
172 }