2 * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved.
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
8 package org.opendaylight.controller.sal.core.spi.data;
10 import com.google.common.util.concurrent.ListenableFuture;
13 * Interface implemented by the {@link DOMStore} and exposed for each {@link DOMStoreWriteTransaction}
14 * upon its transition to Ready state. The frontend (DOMStore user) uses this interface to drive the
15 * commit procedure across potentially multiple DOMStores using the Three-Phase-Commit (3PC) Protocol,
16 * as described in <a href="https://en.wikipedia.org/wiki/Three-phase_commit">Three-Phase-Commit Protocol</a>.
18 * @deprecated Use {@link org.opendaylight.mdsal.dom.spi.store.DOMStoreThreePhaseCommitCohort} instead.
21 public interface DOMStoreThreePhaseCommitCohort {
24 * Sends transaction associated with this three phase commit instance to the
25 * participant, participant votes on the transaction, if the transaction
26 * should be committed or aborted.
28 * @return ListenableFuture with vote of the participant. Vote
29 * {@link ListenableFuture#get()} is following:
32 * true if transaction is approved by data store.
33 * <li>false if the transaction is not approved by data store and
37 ListenableFuture<Boolean> canCommit();
40 * Initiates a pre-commit phase of associated transaction on datastore.
43 * This message is valid only and only if and only if the participant responded
44 * on {@link #canCommit()} call with positive response.
46 * @return ListenableFuture representing acknowledgment for participant
47 * that pre-commit message was received and processed.
49 ListenableFuture<Void> preCommit();
52 * Initiates a abort phase of associated transaction on data store.
54 * @return ListenableFuture representing acknowledgment for participant
55 * that abort message was received.
57 ListenableFuture<Void> abort();
60 * Initiates a commit phase on of associated transaction on data store.
62 * @return ListenableFuture representing acknowledgment for participant
63 * that commit message was received and commit of transaction was
66 ListenableFuture<Void> commit();