/** * Copyright (c) 2014 Cisco Systems, Inc. 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 */ package org.opendaylight.controller.frm; import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.meters.Meter; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.service.rev130819.SalFlowService; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.SalGroupService; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.Group; import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.SalMeterService; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; /** * forwardingrules-manager * org.opendaylight.controller.frm * * ForwardingRulesManager * It represent a central point for whole modul. Implementation * Flow Provider registers the link FlowChangeListener} and it holds all needed * services for link FlowChangeListener}. * * @author Vaclav Demcak * * Created: Aug 25, 2014 */ public interface ForwardingRulesManager extends AutoCloseable { public void start(); /** * Method returns information : * "is Node with send InstanceIdentifier connected"? * * @param InstanceIdentifier ident - the key of the node * @return boolean - is device connected */ public boolean isNodeActive(InstanceIdentifier ident); /** * Method add new {@link FlowCapableNode} to active Node Holder. * ActiveNodeHolder prevent unnecessary Operational/DS read for identify * pre-configure and serious Configure/DS transactions. * * @param InstanceIdentifier ident - the key of the node */ public void registrateNewNode(InstanceIdentifier ident); /** * Method remove disconnected {@link FlowCapableNode} from active Node * Holder. And all next flows or groups or meters will stay in Config/DS * only. * * @param InstanceIdentifier ident - the key of the node */ public void unregistrateNode(InstanceIdentifier ident); /** * Method returns generated transaction ID, which is unique for * every transaction. ID is composite from prefix ("DOM") and unique number. * * @return String transactionID for RPC transaction identification */ public String getNewTransactionId(); /** * Method returns Read Transacion. It is need for Node reconciliation only. * * @return ReadOnlyTransaction */ public ReadOnlyTransaction getReadTranaction(); /** * Flow RPC service * * @return */ public SalFlowService getSalFlowService(); /** * Group RPC service * * @return */ public SalGroupService getSalGroupService(); /** * Meter RPC service * * @return */ public SalMeterService getSalMeterService(); /** * Content definition method and prevent code duplicity in Reconcil * @return ForwardingRulesCommiter */ public ForwardingRulesCommiter getFlowCommiter(); /** * Content definition method and prevent code duplicity in Reconcil * @return ForwardingRulesCommiter */ public ForwardingRulesCommiter getGroupCommiter(); /** * Content definition method and prevent code duplicity * @return ForwardingRulesCommiter */ public ForwardingRulesCommiter getMeterCommiter(); /** * Content definition method * @return FlowNodeReconciliation */ public FlowNodeReconciliation getFlowNodeReconciliation(); }