当前位置: 首页>>代码示例>>Java>>正文


Java OFActionGroup.Builder方法代码示例

本文整理汇总了Java中org.projectfloodlight.openflow.protocol.action.OFActionGroup.Builder方法的典型用法代码示例。如果您正苦于以下问题:Java OFActionGroup.Builder方法的具体用法?Java OFActionGroup.Builder怎么用?Java OFActionGroup.Builder使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在org.projectfloodlight.openflow.protocol.action.OFActionGroup的用法示例。


在下文中一共展示了OFActionGroup.Builder方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: buildActions

import org.projectfloodlight.openflow.protocol.action.OFActionGroup; //导入方法依赖的package包/类
private List<OFAction> buildActions(List<Instruction> treatments) {
    if (treatment == null) {
        return Collections.emptyList();
    }

    boolean tableFound = false;
    List<OFAction> actions = new LinkedList<>();
    for (Instruction i : treatments) {
        switch (i.type()) {
            case NOACTION:
                return Collections.emptyList();
            case L0MODIFICATION:
                actions.add(buildL0Modification(i));
                break;
            case L1MODIFICATION:
                actions.add(buildL1Modification(i));
                break;
            case L2MODIFICATION:
                actions.add(buildL2Modification(i));
                break;
            case L3MODIFICATION:
                actions.add(buildL3Modification(i));
                break;
            case L4MODIFICATION:
                actions.add(buildL4Modification(i));
                break;
            case OUTPUT:
                OutputInstruction out = (OutputInstruction) i;
                OFActionOutput.Builder action = factory().actions().buildOutput()
                        .setPort(OFPort.of((int) out.port().toLong()));
                if (out.port().equals(PortNumber.CONTROLLER)) {
                    action.setMaxLen(OFPCML_NO_BUFFER);
                }
                actions.add(action.build());
                break;
            case GROUP:
                GroupInstruction group = (GroupInstruction) i;
                OFActionGroup.Builder groupBuilder = factory().actions().buildGroup()
                        .setGroup(OFGroup.of(group.groupId().id()));
                actions.add(groupBuilder.build());
                break;
            case QUEUE:
                SetQueueInstruction queue = (SetQueueInstruction) i;
                OFActionSetQueue.Builder queueBuilder = factory().actions().buildSetQueue()
                        .setQueueId(queue.queueId());
                actions.add(queueBuilder.build());
                break;
            case TABLE:
                //FIXME: should not occur here.
                tableFound = true;
                break;
            case EXTENSION:
                actions.add(buildExtensionAction(((Instructions.ExtensionInstructionWrapper) i)
                        .extensionInstruction()));
                break;
            default:
                log.warn("Instruction type {} not yet implemented.", i.type());
        }
    }
    if (tableFound && actions.isEmpty()) {
        // handles the case where there are no actions, but there is
        // a goto instruction for the next table
        return Collections.emptyList();
    }
    return actions;
}
 
开发者ID:shlee89,项目名称:athena,代码行数:67,代码来源:FlowModBuilderVer13.java

示例2: buildActions

import org.projectfloodlight.openflow.protocol.action.OFActionGroup; //导入方法依赖的package包/类
private List<OFAction> buildActions(TrafficTreatment treatment) {
    if (treatment == null) {
        return Collections.emptyList();
    }

    List<OFAction> actions = new LinkedList<>();
    for (Instruction i : treatment.allInstructions()) {
        switch (i.type()) {
            case L0MODIFICATION:
                actions.add(buildL0Modification(i));
                break;
            case L2MODIFICATION:
                actions.add(buildL2Modification(i));
                break;
            case L3MODIFICATION:
                actions.add(buildL3Modification(i));
                break;
            case OUTPUT:
                Instructions.OutputInstruction out =
                        (Instructions.OutputInstruction) i;
                OFActionOutput.Builder action = factory.actions().buildOutput()
                        .setPort(OFPort.of((int) out.port().toLong()));
                if (out.port().equals(PortNumber.CONTROLLER)) {
                    action.setMaxLen(OFPCML_NO_BUFFER);
                }
                actions.add(action.build());
                break;
            case GROUP:
                Instructions.GroupInstruction grp =
                        (Instructions.GroupInstruction) i;
                OFActionGroup.Builder actgrp = factory.actions().buildGroup()
                        .setGroup(OFGroup.of(grp.groupId().id()));
                actions.add(actgrp.build());
                break;
            case EXTENSION:
                Instructions.ExtensionInstructionWrapper wrapper =
                (Instructions.ExtensionInstructionWrapper) i;
                actions.add(buildExtensionAction(
                        wrapper.extensionInstruction(), wrapper.deviceId()));
                break;
            default:
                log.warn("Instruction type {} not yet implemented.", i.type());
        }
    }

    return actions;
}
 
开发者ID:shlee89,项目名称:athena,代码行数:48,代码来源:GroupModBuilder.java

示例3: buildActions

import org.projectfloodlight.openflow.protocol.action.OFActionGroup; //导入方法依赖的package包/类
private List<OFAction> buildActions(List<Instruction> treatments) {
    List<OFAction> actions = new LinkedList<>();
    boolean tableFound = false;
    if (treatment == null) {
        return actions;
    }
    for (Instruction i : treatments) {
        switch (i.type()) {
            case DROP:
                log.warn("Saw drop action; assigning drop action");
                return new LinkedList<>();
            case L0MODIFICATION:
                actions.add(buildL0Modification(i));
                break;
            case L2MODIFICATION:
                actions.add(buildL2Modification(i));
                break;
            case L3MODIFICATION:
                actions.add(buildL3Modification(i));
                break;
            case OUTPUT:
                OutputInstruction out = (OutputInstruction) i;
                OFActionOutput.Builder action = factory().actions().buildOutput()
                        .setPort(OFPort.of((int) out.port().toLong()));
                if (out.port().equals(PortNumber.CONTROLLER)) {
                    action.setMaxLen(OFPCML_NO_BUFFER);
                }
                actions.add(action.build());
                break;
            case GROUP:
                GroupInstruction group = (GroupInstruction) i;
                OFActionGroup.Builder groupBuilder = factory().actions().buildGroup()
                        .setGroup(OFGroup.of(group.groupId().id()));
                actions.add(groupBuilder.build());
                break;
            case TABLE:
                //FIXME: should not occur here.
                tableFound = true;
                break;
            default:
                log.warn("Instruction type {} not yet implemented.", i.type());
        }
    }
    if (tableFound && actions.isEmpty()) {
        // handles the case where there are no actions, but there is
        // a goto instruction for the next table
        return null;
    }
    return actions;
}
 
开发者ID:ravikumaran2015,项目名称:ravikumaran201504,代码行数:51,代码来源:FlowModBuilderVer13.java

示例4: buildActions

import org.projectfloodlight.openflow.protocol.action.OFActionGroup; //导入方法依赖的package包/类
private List<OFAction> buildActions(List<Instruction> treatments, Boolean immediateActions) {
    if (treatment == null) {
        return Collections.emptyList();
    }

    boolean tableFound = false;
    List<OFAction> actions = new LinkedList<>();

    //Meter action handling
    if (null != treatment.meters() && immediateActions) {
        treatment.meters().forEach(meterInstruction -> {
            OFAction meterAction = buildMeterAction(meterInstruction);
            actions.add(meterAction);
        });
    }

    for (Instruction i : treatments) {
        switch (i.type()) {
            case NOACTION:
                return Collections.emptyList();
            case L0MODIFICATION:
                actions.add(buildL0Modification(i));
                break;
            case L1MODIFICATION:
                actions.add(buildL1Modification(i));
                break;
            case L2MODIFICATION:
                actions.add(buildL2Modification(i));
                break;
            case L3MODIFICATION:
                actions.add(buildL3Modification(i));
                break;
            case L4MODIFICATION:
                actions.add(buildL4Modification(i));
                break;
            case OUTPUT:
                Instructions.OutputInstruction out = (Instructions.OutputInstruction) i;
                OFActionOutput.Builder action = factory().actions().buildOutput()
                        .setPort(OFPort.of((int) out.port().toLong()));
                if (out.port().equals(PortNumber.CONTROLLER)) {
                    action.setMaxLen(OFPCML_NO_BUFFER);
                }
                actions.add(action.build());
                break;
            case GROUP:
                Instructions.GroupInstruction group = (Instructions.GroupInstruction) i;
                OFActionGroup.Builder groupBuilder = factory().actions().buildGroup()
                        .setGroup(OFGroup.of(group.groupId().id()));
                actions.add(groupBuilder.build());
                break;
            case QUEUE:
                Instructions.SetQueueInstruction queue = (Instructions.SetQueueInstruction) i;
                OFActionSetQueue.Builder queueBuilder = factory().actions().buildSetQueue()
                        .setQueueId(queue.queueId());
                actions.add(queueBuilder.build());
                break;
            case TABLE:
                //FIXME: should not occur here.
                tableFound = true;
                break;
            case EXTENSION:
                actions.add(buildExtensionAction(((Instructions.ExtensionInstructionWrapper) i)
                        .extensionInstruction()));
                break;
            default:
                log.warn("Instruction type {} not yet implemented.", i.type());
        }
    }

    if (tableFound && actions.isEmpty()) {
        // handles the case where there are no actions, but there is
        // a goto instruction for the next table
        return Collections.emptyList();
    }
    return actions;
}
 
开发者ID:opennetworkinglab,项目名称:onos,代码行数:77,代码来源:FlowModBuilderVer15.java


注:本文中的org.projectfloodlight.openflow.protocol.action.OFActionGroup.Builder方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。