Search in sources :

Example 1 with LearningSwitchHandlerSimpleImpl

use of org.opendaylight.openflowplugin.learningswitch.LearningSwitchHandlerSimpleImpl in project openflowplugin by opendaylight.

the class MultipleLearningSwitchHandlerFacadeImpl method onSwitchAppeared.

@Override
public synchronized void onSwitchAppeared(InstanceIdentifier<Table> appearedTablePath) {
    LOG.debug("expected table acquired, learning ..");
    /**
     * appearedTablePath is in form of /nodes/node/node-id/table/table-id
     * so we shorten it to /nodes/node/node-id to get identifier of switch.
     */
    InstanceIdentifier<Node> nodePath = InstanceIdentifierUtils.getNodePath(appearedTablePath);
    /**
     * We check if we already initialized dispatcher for that node,
     * if not we create new handler for switch.
     */
    if (!packetInDispatcher.getHandlerMapping().containsKey(nodePath)) {
        // delegate this node (owning appearedTable) to SimpleLearningSwitchHandler
        LearningSwitchHandlerSimpleImpl simpleLearningSwitch = new LearningSwitchHandlerSimpleImpl(dataStoreAccessor, packetProcessingService, null);
        /**
         * We propagate table event to newly instantiated instance of learning switch
         */
        simpleLearningSwitch.onSwitchAppeared(appearedTablePath);
        /**
         * We update mapping of already instantiated LearningSwitchHanlders
         */
        packetInDispatcher.getHandlerMapping().put(nodePath, simpleLearningSwitch);
    }
}
Also used : LearningSwitchHandlerSimpleImpl(org.opendaylight.openflowplugin.learningswitch.LearningSwitchHandlerSimpleImpl) Node(org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node)

Aggregations

LearningSwitchHandlerSimpleImpl (org.opendaylight.openflowplugin.learningswitch.LearningSwitchHandlerSimpleImpl)1 Node (org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node)1