Bug-4957: Double candidate, clean up
[openflowplugin.git] / openflowplugin-api / src / main / java / org / opendaylight / openflowplugin / api / openflow / role / RoleContext.java
1 /**
2  * Copyright (c) 2015 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.openflowplugin.api.openflow.role;
9
10 import java.util.concurrent.Future;
11 import org.opendaylight.controller.md.sal.common.api.clustering.CandidateAlreadyRegisteredException;
12 import org.opendaylight.openflowplugin.api.openflow.device.RequestContextStack;
13
14 /**
15  * Created by kramesha on 9/12/15.
16  */
17 public interface RoleContext extends RoleChangeListener, RequestContextStack {
18
19     /**
20      * Initialization method is responsible for a registration of
21      * {@link org.opendaylight.controller.md.sal.common.api.clustering.Entity}
22      * and listen for notification from service. {@link Future} returned object is used primary
23      * for new connection initialization phase where we have to wait for actual Role.
24      * The {@link Future} has to be canceled if device is in disconnected state or when
25      * {@link org.opendaylight.controller.md.sal.common.api.clustering.EntityOwnershipService} returns
26      * {@link org.opendaylight.controller.md.sal.common.api.clustering.CandidateAlreadyRegisteredException}
27      */
28     void initialization() throws CandidateAlreadyRegisteredException;
29
30     /**
31      * Transaction Candidate will provide safe way to correctly finish TxChainManager from
32      * last Node Master. It means only Master of TxEntity could hold TxChainFactory and
33      * active TransactionChain to write Data to Distributed DataStore.
34      */
35     void setupTxCandidate() throws CandidateAlreadyRegisteredException;
36
37     /**
38      * UnregistrationTxCandidate from OwnershipService
39      */
40     void suspendTxCandidate();
41
42     @Override
43     void close();
44
45 }