/**
* 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();
}