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.controller.cluster.access.client;
10 import com.google.common.base.Preconditions;
11 import java.util.Optional;
14 * Implementation-internal intermediate subclass between {@link AbstractClientConnection} and two-out of three of its
15 * sublcasses. It allows us to share some code.
17 * @author Robert Varga
19 * @param <T> Concrete {@link BackendInfo} type
21 abstract class AbstractReceivingClientConnection<T extends BackendInfo> extends AbstractClientConnection<T> {
22 private final T backend;
23 private long nextTxSequence;
25 AbstractReceivingClientConnection(final ClientActorContext context, final Long cookie, final T backend) {
26 super(context, cookie);
27 this.backend = Preconditions.checkNotNull(backend);
30 AbstractReceivingClientConnection(final AbstractReceivingClientConnection<T> oldConnection) {
32 this.backend = oldConnection.backend;
33 this.nextTxSequence = oldConnection.nextTxSequence;
37 public final Optional<T> getBackendInfo() {
38 return Optional.of(backend);
45 final long nextTxSequence() {
46 return nextTxSequence++;