All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.opendaylight.snmp4sdn.internal.FlowProgrammerNotifier Maven / Gradle / Ivy

The newest version!
/*
 * Copyright (c) 2013 Industrial Technology Research Institute of Taiwan and others.  All rights reserved.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
 * and is available at http://www.eclipse.org/legal/epl-v10.html
 */

/*
This code reused the code base of OpenFlow plugin contributed by Cisco Systems, Inc. Their efforts are appreciated.
*/

package org.opendaylight.snmp4sdn.internal;

import org.apache.felix.dm.Component;
import org.opendaylight.snmp4sdn.IFlowProgrammerNotifier;
import org.opendaylight.controller.sal.core.Node;
import org.opendaylight.controller.sal.flowprogrammer.Flow;
import org.opendaylight.controller.sal.flowprogrammer.IPluginOutFlowProgrammerService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * Flow Programmer Notifier class for relaying asynchronous messages received
 * from the network node to the listeners on the proper container
 */
public class FlowProgrammerNotifier implements IFlowProgrammerNotifier {
    protected static final Logger logger = LoggerFactory
            .getLogger(FlowProgrammerNotifier.class);
    private IPluginOutFlowProgrammerService salNotifier;

    public FlowProgrammerNotifier() {
        salNotifier = null;
    }

    void init(Component c) {
        logger.debug("FlowProgrammerNotifier: INIT called!");
    }

    /**
     * Function called by the dependency manager when at least one dependency
     * become unsatisfied or when the component is shutting down because for
     * example bundle is being stopped.
     *
     */
    void destroy() {
        logger.debug("FlowProgrammerNotifier: DESTROY called!");
    }

    /**
     * Function called by dependency manager after "init ()" is called and after
     * the services provided by the class are registered in the service registry
     *
     */
    void start() {
        logger.debug("FlowProgrammerNotifier: START called!");
    }

    /**
     * Function called by the dependency manager before the services exported by
     * the component are unregistered, this will be followed by a "destroy ()"
     * calls
     *
     */
    void stop() {
        logger.debug("FlowProgrammerNotifier: STOP called!");
    }

    public void setPluginOutFlowProgrammerService(
            IPluginOutFlowProgrammerService s) {
        this.salNotifier = s;
    }

    public void unsetPluginOutFlowProgrammerService(
            IPluginOutFlowProgrammerService s) {
        if (this.salNotifier == s) {
            this.salNotifier = null;
        }
    }

    @Override
    public void flowRemoved(Node node, Flow flow) {
        if (salNotifier != null) {
            salNotifier.flowRemoved(node, flow);
        } else {
            logger.warn("Unable to relay switch message to upper layer");
        }
    }

    @Override
    public void flowErrorReported(Node node, long rid, Object err) {
        if (salNotifier != null) {
            salNotifier.flowErrorReported(node, rid, err);
        } else {
            logger.warn("Unable to relay switch error message to upper layer");
        }
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy