import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicLong;
-import org.opendaylight.openflowplugin.openflow.md.core.ConnectionConductor;
-import org.opendaylight.openflowplugin.openflow.md.core.SwitchConnectionDistinguisher;
+import org.opendaylight.openflowplugin.api.openflow.md.core.session.IMessageDispatchService;
+import org.opendaylight.openflowplugin.api.openflow.md.core.session.SessionContext;
+import org.opendaylight.openflowplugin.api.openflow.md.core.session.SwitchSessionKeyOF;
+import org.opendaylight.openflowplugin.api.openflow.md.ModelDrivenSwitch;
+import org.opendaylight.openflowplugin.api.openflow.md.core.ConnectionConductor;
+import org.opendaylight.openflowplugin.api.openflow.md.core.NotificationEnqueuer;
+import org.opendaylight.openflowplugin.api.openflow.md.core.SwitchConnectionDistinguisher;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetFeaturesOutput;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.Port;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortStatus;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortGrouping;
+import org.opendaylight.yangtools.concepts.CompositeObjectRegistration;
/**
* @author mirehak
private GetFeaturesOutput features;
private ConnectionConductor primaryConductor;
+ private NotificationEnqueuer notificationEnqueuer;
private ConcurrentHashMap<SwitchConnectionDistinguisher, ConnectionConductor> auxiliaryConductors;
private boolean valid;
- private SwitchConnectionDistinguisher sessionKey;
+ private SwitchSessionKeyOF sessionKey;
private IMessageDispatchService mdService;
private final AtomicLong xid;
- private final Map<Long, Port> physicalPorts;
+ private final Map<Long, PortGrouping> physicalPorts;
private final Map<Long, Boolean> portBandwidth;
+ private CompositeObjectRegistration<ModelDrivenSwitch> providerRegistration;
+ private int seed;
+
/**
* default ctor
auxiliaryConductors = new ConcurrentHashMap<>();
mdService = new MessageDispatchServiceImpl(this);
xid = new AtomicLong();
- this.physicalPorts = new HashMap<Long, Port>();
+ this.physicalPorts = new HashMap<Long, PortGrouping>();
this.portBandwidth = new HashMap<Long, Boolean>();
}
public Set<Entry<SwitchConnectionDistinguisher, ConnectionConductor>> getAuxiliaryConductors() {
return Collections.unmodifiableSet(auxiliaryConductors.entrySet());
}
-
+
@Override
public GetFeaturesOutput getFeatures() {
return features;
/**
* @param sessionKey the sessionKey to set
*/
- public void setSessionKey(SwitchConnectionDistinguisher sessionKey) {
+ public void setSessionKey(SwitchSessionKeyOF sessionKey) {
this.sessionKey = sessionKey;
}
+
+ /**
+ * @param seed the seed to set
+ */
+ public void setSeed(int seed) {
+ this.seed = seed;
+ }
@Override
- public SwitchConnectionDistinguisher getSessionKey() {
+ public SwitchSessionKeyOF getSessionKey() {
return sessionKey;
}
}
@Override
- public Map<Long, Port> getPhysicalPorts() {
+ public Map<Long, PortGrouping> getPhysicalPorts() {
return this.physicalPorts;
}
+
+ @Override
+ public Map<Long, Boolean> getPortsBandwidth() {
+ return this.portBandwidth;
+ }
@Override
public Set<Long> getPorts() {
}
@Override
- public Port getPhysicalPort(Long portNumber) {
+ public PortGrouping getPhysicalPort(Long portNumber) {
return this.physicalPorts.get(portNumber);
}
}
@Override
- public boolean isPortEnabled(Port port) {
+ public boolean isPortEnabled(PortGrouping port) {
if (port == null) {
return false;
}
}
@Override
- public List<Port> getEnabledPorts() {
- List<Port> result = new ArrayList<Port>();
+ public List<PortGrouping> getEnabledPorts() {
+ List<PortGrouping> result = new ArrayList<PortGrouping>();
synchronized (this.physicalPorts) {
- for (Port port : physicalPorts.values()) {
+ for (PortGrouping port : physicalPorts.values()) {
if (isPortEnabled(port)) {
result.add(port);
}
}
return result;
}
-
+
@Override
- public void processPortStatusMsg(PortStatus msg) {
- Port port = msg;
- if (msg.getReason().getIntValue() == 2) {
- updatePhysicalPort(port);
- } else if (msg.getReason().getIntValue() == 0) {
- updatePhysicalPort(port);
- } else if (msg.getReason().getIntValue() == 1) {
- deletePhysicalPort(port);
- }
-
+ public void setProviderRegistration(
+ CompositeObjectRegistration<ModelDrivenSwitch> providerRegistration) {
+ this.providerRegistration = providerRegistration;
}
-
- private void updatePhysicalPort(Port port) {
- Long portNumber = port.getPortNo();
- physicalPorts.put(portNumber, port);
- portBandwidth
- .put(portNumber,
- ( (port.getCurrentFeatures().is_100gbFd())
- |(port.getCurrentFeatures().is_100mbFd()) | (port.getCurrentFeatures().is_100mbHd())
- | (port.getCurrentFeatures().is_10gbFd()) | (port.getCurrentFeatures().is_10mbFd())
- | (port.getCurrentFeatures().is_10mbHd()) | (port.getCurrentFeatures().is_1gbFd())
- | (port.getCurrentFeatures().is_1gbHd()) | (port.getCurrentFeatures().is_1tbFd())
- | (port.getCurrentFeatures().is_40gbFd()) | (port.getCurrentFeatures().isAutoneg())
- | (port.getCurrentFeatures().isCopper()) | (port.getCurrentFeatures().isFiber())
- | (port.getCurrentFeatures().isOther()) | (port.getCurrentFeatures().isPause())
- | (port.getCurrentFeatures().isPauseAsym()) ) );
+
+ @Override
+ public CompositeObjectRegistration<ModelDrivenSwitch> getProviderRegistration() {
+ return providerRegistration;
}
-
- private void deletePhysicalPort(Port port) {
- Long portNumber = port.getPortNo();
- physicalPorts.remove(portNumber);
- portBandwidth.remove(portNumber);
+
+ @Override
+ public int getSeed() {
+ return seed;
+ }
+
+ /**
+ * @param notificationEnqueuer the notificationEnqueuer to set
+ */
+ public void setNotificationEnqueuer(
+ NotificationEnqueuer notificationEnqueuer) {
+ this.notificationEnqueuer = notificationEnqueuer;
+ }
+
+ @Override
+ public NotificationEnqueuer getNotificationEnqueuer() {
+ return notificationEnqueuer;
}
}