protected List<FilteringObjective> updateFilterSequential(FilteringObjective filteringObjective) { List<FilteringObjective> leftUpdates = this.leftChild.updateFilter(filteringObjective); List<FilteringObjective> rightUpdates = this.rightChild.updateFilter(filteringObjective); return this.filterTable.updateFilter(leftUpdates); }
public List<ForwardingObjective> updateForward(ForwardingObjective forwardingObjective) { return this.updateForwardNode(forwardingObjective).toForwardingObjectiveList(); }
protected List<NextObjective> updateNextComposition(NextObjective nextObjective) { List<NextObjective> leftUpdates = this.leftChild.updateNext(nextObjective); List<NextObjective> rightUpdates = this.rightChild.updateNext(nextObjective); List<NextObjective> updates = new ArrayList<>(); updates.addAll(leftUpdates); updates.addAll(rightUpdates); return this.nextTable.updateNext(updates); }
protected List<FilteringObjective> updateFilter(FilteringObjective filteringObjective) { switch (this.operator) { case Parallel: return updateFilterParallel(filteringObjective); case Sequential: return updateFilterSequential(filteringObjective); case Override: return updateFilterOverride(filteringObjective); case Application: if (filteringObjective.appId().id() == this.applicationId) { return this.filterTable.updateFilter(filteringObjective); } else { return new ArrayList<>(); } default: return new ArrayList<>(); } }
postfix.add(new FlowObjectiveCompositionTree((short) applicationId)); } else if (ch == '(') { stack.push(ch); } else if (ch == ')') { while (stack.peek() != '(') { postfix.add(new FlowObjectiveCompositionTree(stack.pop())); postfix.add(new FlowObjectiveCompositionTree(stack.pop())); postfix.add(new FlowObjectiveCompositionTree(stack.pop()));
@Override public void forward(DeviceId deviceId, ForwardingObjective forwardingObjective) { checkPermission(FLOWRULE_WRITE); if (queueObjective(deviceId, forwardingObjective)) { return; } List<ForwardingObjective> forwardingObjectives = this.deviceCompositionTreeMap.get(deviceId).updateForward(forwardingObjective); for (ForwardingObjective tmp : forwardingObjectives) { executorService.execute(new ObjectiveInstaller(deviceId, tmp)); } }
public List<NextObjective> updateNext(NextObjective nextObjective) { switch (this.operator) { case Parallel: case Sequential: case Override: return updateNextComposition(nextObjective); case Application: if (nextObjective.appId().id() == this.applicationId) { return this.nextTable.updateNext(nextObjective); } else { return new ArrayList<>(); } default: return new ArrayList<>(); } }
public ForwardUpdateTable updateForwardNode(ForwardingObjective forwardingObjective) { switch (this.operator) { case Parallel: case Sequential: case Override: return updateForwardComposition(forwardingObjective); case Application: if (forwardingObjective.appId().id() == this.applicationId) { return this.forwardTable.updateForward(forwardingObjective); } else { return (new ForwardUpdateTable()); } default: return (new ForwardUpdateTable()); } }
protected List<FilteringObjective> updateFilterOverride(FilteringObjective filteringObjective) { List<FilteringObjective> leftUpdates = this.leftChild.updateFilter(filteringObjective); List<FilteringObjective> rightUpdates = this.rightChild.updateFilter(filteringObjective); return this.filterTable.updateFilter(leftUpdates); }
@Override public void next(DeviceId deviceId, NextObjective nextObjective) { checkPermission(FLOWRULE_WRITE); List<NextObjective> nextObjectives = this.deviceCompositionTreeMap.get(deviceId).updateNext(nextObjective); for (NextObjective tmp : nextObjectives) { executorService.execute(new ObjectiveInstaller(deviceId, tmp)); } }
protected ForwardUpdateTable updateForwardComposition(ForwardingObjective forwardingObjective) { ForwardUpdateTable leftUpdates = this.leftChild.updateForwardNode(forwardingObjective); ForwardUpdateTable rightUpdates = this.rightChild.updateForwardNode(forwardingObjective);
protected List<FilteringObjective> updateFilterParallel(FilteringObjective filteringObjective) { List<FilteringObjective> leftUpdates = this.leftChild.updateFilter(filteringObjective); List<FilteringObjective> rightUpdates = this.rightChild.updateFilter(filteringObjective); List<FilteringObjective> updates = new ArrayList<>(); updates.addAll(leftUpdates); updates.addAll(rightUpdates); return this.filterTable.updateFilter(updates); }
@Override public void filter(DeviceId deviceId, FilteringObjective filteringObjective) { checkPermission(FLOWRULE_WRITE); List<FilteringObjective> filteringObjectives = this.deviceCompositionTreeMap.get(deviceId).updateFilter(filteringObjective); for (FilteringObjective tmp : filteringObjectives) { executorService.execute(new ObjectiveInstaller(deviceId, tmp)); } }