SDN Controller Programming Guide
189
package com.hp.hm.impl;
import com.hp.of.ctl.ControllerService;
import com.hp.of.ctl.DataPathEvent;
import com.hp.of.ctl.DataPathListener;
import com.hp.of.ctl.OpenflowEventType;
import com.hp.of.ctl.QueueEvent;
import com.hp.of.lib.dt.DataPathInfo;
...
public class SwitchManager implements SwitchService {
...
private DataPathListener dataPathListener;
public SwitchManager(SystemInformationService systemInformationService) {
...
dataPathListener = new DataPathListenerImpl();
}
...
@Override
public List<Switch> find(SwitchFilter filter,
SortSpecification<SwitchSortKey> sortSpecification) {
// In a real application a database may be used: filter would be
// mapped to predicates and sortSpecification to sorting clauses.
List<Switch> switches = new ArrayList<Switch>(devices.values());
// At this point just the MAC Address filter is used so a temporal
// implementation is also used (NOTE: This is not a proper way of
// implementing filtering).
// -----
if (filter != null && filter.getMacAddressCondition() != null) {
List<Switch> toDelete = new ArrayList<Switch>();
MacAddress filterMacAddress = filter.getMacAddressCondition()
.getValue();
EqualityCondition.Mode mode = filter.getMacAddressCondition()
.getMode();
for (Switch device : switches) {
if (device.getMacAddress().equals(filterMacAddress)) {
if (mode == EqualityCondition.Mode.UNEQUAL) {
toDelete.add(device);
}
} else {
if (mode == EqualityCondition.Mode.EQUAL) {
toDelete.add(device);
}
}