X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatabroker%2Factors%2Fdds%2FAbstractProxyHistory.java;fp=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatabroker%2Factors%2Fdds%2FAbstractProxyHistory.java;h=9093c080973374c7e9c1959f13ff3065b6d71af3;hb=1d34f75864ac09d31ef0f7b4ef59f7434167ae15;hp=0000000000000000000000000000000000000000;hpb=25af210af181f4fb6b68c09ae33dfb984b0ed46a;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/AbstractProxyHistory.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/AbstractProxyHistory.java new file mode 100644 index 0000000000..9093c08097 --- /dev/null +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/AbstractProxyHistory.java @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2016 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.cluster.databroker.actors.dds; + +import akka.actor.ActorRef; +import com.google.common.base.Preconditions; +import java.util.Optional; +import org.opendaylight.controller.cluster.access.concepts.LocalHistoryIdentifier; +import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier; +import org.opendaylight.yangtools.concepts.Identifiable; +import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTree; + +/** + * Per-connection representation of a local history. + * + * @author Robert Varga + */ +abstract class AbstractProxyHistory implements Identifiable { + // FIXME: this should really be ClientConnection + private final DistributedDataStoreClientBehavior client; + private final LocalHistoryIdentifier identifier; + + AbstractProxyHistory(final DistributedDataStoreClientBehavior client, final LocalHistoryIdentifier identifier) { + this.client = Preconditions.checkNotNull(client); + this.identifier = Preconditions.checkNotNull(identifier); + } + + static AbstractProxyHistory create(final DistributedDataStoreClientBehavior client, + final Optional backendInfo, final LocalHistoryIdentifier identifier) { + final Optional dataTree = backendInfo.flatMap(ShardBackendInfo::getDataTree); + return dataTree.isPresent() ? new LocalProxyHistory(client, identifier, dataTree.get()) : new RemoteProxyHistory(client, identifier); + } + + @Override + public LocalHistoryIdentifier getIdentifier() { + return identifier; + } + + final ActorRef localActor() { + return client.self(); + } + + final AbstractProxyTransaction createTransactionProxy(final TransactionIdentifier txId) { + return doCreateTransactionProxy(client, new TransactionIdentifier(identifier, txId.getTransactionId())); + } + + abstract AbstractProxyTransaction doCreateTransactionProxy(DistributedDataStoreClientBehavior client, + TransactionIdentifier txId); +}