package org.opendaylight.openflowplugin.impl.device;
-import com.google.common.base.Preconditions;
import org.opendaylight.openflowplugin.api.openflow.device.DeviceState;
-import org.opendaylight.openflowplugin.api.openflow.device.XidGenerator;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.FeaturesReply;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetFeaturesOutput;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetFeaturesOutputBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortGrouping;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.features.reply.PhyPort;
-import javax.annotation.CheckForNull;
-import javax.annotation.Nonnull;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
/**
- * openflowplugin-impl
- * org.opendaylight.openflowplugin.impl.device
- * <p/>
- * DeviceState is builded from {@link FeaturesReply} and {@link NodeId}. Both values are inside
- * {@link org.opendaylight.openflowplugin.api.openflow.connection.ConnectionContext}
- *
- * @author <a href="mailto:vdemcak@cisco.com">Vaclav Demcak</a>
- * <p/>
- * Created: Mar 29, 2015
+ * Holder for device features
*/
class DeviceStateImpl implements DeviceState {
- private final GetFeaturesOutput featuresOutput;
- private final Map<Long, PortGrouping> portGrouping;
- private final Map<Long, Long> portsBandwidth;
- private final XidGenerator xidGenerator;
- private final NodeId nodeId;
- private boolean valid;
-
- public DeviceStateImpl(@CheckForNull final FeaturesReply featuresReply, @Nonnull final NodeId nodeId) {
- Preconditions.checkArgument(featuresReply != null);
- Preconditions.checkArgument(featuresReply.getPhyPort() != null);
- featuresOutput = new GetFeaturesOutputBuilder(featuresReply).build();
- this.nodeId = Preconditions.checkNotNull(nodeId);
- xidGenerator = new XidGenerator();
- portGrouping = new HashMap<>();
- portsBandwidth = new HashMap<>();
- for (final PhyPort port : featuresReply.getPhyPort()) {
- portGrouping.put(port.getPortNo(), port);
- portsBandwidth.put(port.getPortNo(), port.getMaxSpeed());
- }
- }
+ private boolean meterIsAvailable;
+ private boolean groupIsAvailable;
+ private boolean flowStatisticsAvailable;
+ private boolean tableStatisticsAvailable;
+ private boolean portStatisticsAvailable;
+ private boolean queueStatisticsAvailable;
- @Override
- public NodeId getNodeId() {
- return nodeId;
+ DeviceStateImpl() {
}
@Override
- public GetFeaturesOutput getFeatures() {
- return featuresOutput;
+ public boolean isMetersAvailable() {
+ return meterIsAvailable;
}
@Override
- public boolean isValid() {
- return valid;
+ public void setMeterAvailable(final boolean available) {
+ meterIsAvailable = available;
}
@Override
- public void setValid(final boolean valid) {
- this.valid = valid;
+ public boolean isGroupAvailable() {
+ return groupIsAvailable;
}
@Override
- public Map<Long, PortGrouping> getPhysicalPorts() {
- return portGrouping;
+ public void setGroupAvailable(final boolean available) {
+ groupIsAvailable = available;
}
@Override
- public Map<Long, Long> getPortsBandwidth() {
- return portsBandwidth;
+ public boolean isFlowStatisticsAvailable() {
+ return flowStatisticsAvailable;
}
@Override
- public Set<Long> getPorts() {
- return portGrouping.keySet();
+ public void setFlowStatisticsAvailable(final boolean available) {
+ flowStatisticsAvailable = available;
}
@Override
- public PortGrouping getPhysicalPort(final Long portNumber) {
- return portGrouping.get(portNumber);
+ public boolean isTableStatisticsAvailable() {
+ return tableStatisticsAvailable;
}
@Override
- public Long getPortBandwidth(final Long portNumber) {
- return portsBandwidth.get(portNumber);
+ public void setTableStatisticsAvailable(final boolean available) {
+ tableStatisticsAvailable = available;
}
@Override
- public boolean isPortEnabled(final long portNumber) {
- return portGrouping.containsKey(portNumber);
+ public boolean isPortStatisticsAvailable() {
+ return portStatisticsAvailable;
}
@Override
- public boolean isPortEnabled(final PortGrouping port) {
- return portGrouping.containsValue(port);
+ public void setPortStatisticsAvailable(final boolean available) {
+ portStatisticsAvailable = available;
}
@Override
- public List<PortGrouping> getEnabledPorts() {
- return new ArrayList<PortGrouping>(portGrouping.values());
+ public boolean isQueueStatisticsAvailable() {
+ return queueStatisticsAvailable;
}
@Override
- public int getSeed() {
- return hashCode();
+ public void setQueueStatisticsAvailable(final boolean available) {
+ queueStatisticsAvailable = available;
}
}