2 * Copyright (c) 2015 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.cluster.datastore;
10 import javax.annotation.Nonnull;
11 import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier;
12 import org.slf4j.Logger;
13 import org.slf4j.LoggerFactory;
15 abstract class AbstractTransactionContext implements TransactionContext {
16 private static final Logger LOG = LoggerFactory.getLogger(AbstractTransactionContext.class);
17 private final TransactionIdentifier transactionIdentifier;
18 private long modificationCount = 0;
19 private boolean handOffComplete;
20 private final short transactionVersion;
22 protected AbstractTransactionContext(TransactionIdentifier transactionIdentifier) {
23 this(transactionIdentifier, DataStoreVersions.CURRENT_VERSION);
26 protected AbstractTransactionContext(TransactionIdentifier transactionIdentifier, short transactionVersion) {
27 this.transactionIdentifier = transactionIdentifier;
28 this.transactionVersion = transactionVersion;
32 * Get the transaction identifier associated with this context.
34 * @return Transaction identifier.
36 @Nonnull protected final TransactionIdentifier getIdentifier() {
37 return transactionIdentifier;
40 protected final void incrementModificationCount() {
44 protected final void logModificationCount() {
45 LOG.debug("Total modifications on Tx {} = [ {} ]", getIdentifier(), modificationCount);
49 public final void operationHandOffComplete() {
50 handOffComplete = true;
53 protected boolean isOperationHandOffComplete(){
54 return handOffComplete;
58 public boolean usesOperationLimiting() {
63 public short getTransactionVersion() {
64 return transactionVersion;