2 * Copyright (c) 2016 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.mdsal.dom.broker;
10 import java.util.concurrent.atomic.AtomicLong;
11 import org.opendaylight.mdsal.dom.api.DOMDataTreeReadTransaction;
12 import org.opendaylight.mdsal.dom.api.DOMDataTreeReadWriteTransaction;
13 import org.opendaylight.mdsal.dom.api.DOMDataTreeService;
14 import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
15 import org.opendaylight.mdsal.dom.api.DOMTransactionChain;
16 import org.opendaylight.mdsal.dom.api.DOMTransactionChainListener;
17 import org.opendaylight.mdsal.dom.spi.PingPongMergingDOMDataBroker;
19 public class ShardedDOMDataBrokerAdapter implements PingPongMergingDOMDataBroker {
20 private final AtomicLong chainNum = new AtomicLong();
21 private final AtomicLong txNum = new AtomicLong();
22 private final DOMDataTreeService service;
24 public ShardedDOMDataBrokerAdapter(final DOMDataTreeService service) {
25 this.service = service;
29 public DOMDataTreeReadTransaction newReadOnlyTransaction() {
30 return new ShardedDOMReadTransactionAdapter(newTransactionIdentifier(), service);
34 public DOMDataTreeWriteTransaction newWriteOnlyTransaction() {
35 return new ShardedDOMWriteTransactionAdapter(newTransactionIdentifier(), service);
39 public DOMDataTreeReadWriteTransaction newReadWriteTransaction() {
40 return new ShardedDOMReadWriteTransactionAdapter(newTransactionIdentifier(), service);
44 public DOMTransactionChain createTransactionChain(final DOMTransactionChainListener listener) {
45 return new ShardedDOMTransactionChainAdapter(newChainIdentifier(), service, listener);
48 private Object newTransactionIdentifier() {
49 return "DOM-" + txNum.getAndIncrement();
52 private Object newChainIdentifier() {
53 return "DOM-CHAIN-" + chainNum;