X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fcds-access-api%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Faccess%2Fcommands%2FConnectClientRequest.java;fp=opendaylight%2Fmd-sal%2Fcds-access-api%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Faccess%2Fcommands%2FConnectClientRequest.java;h=4800cea5e2a292db468103c1585ad7353185e2e2;hb=50005093051d43b0fb02edbb05b37c694c186257;hp=0000000000000000000000000000000000000000;hpb=99ef4ed2d2cab930218d7cf74eec69e6f763b148;p=controller.git diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ConnectClientRequest.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ConnectClientRequest.java new file mode 100644 index 0000000000..4800cea5e2 --- /dev/null +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ConnectClientRequest.java @@ -0,0 +1,91 @@ +/* + * 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.access.commands; + +import akka.actor.ActorRef; +import com.google.common.annotations.Beta; +import com.google.common.base.MoreObjects.ToStringHelper; +import com.google.common.base.Preconditions; +import javax.annotation.Nonnull; +import org.opendaylight.controller.cluster.access.ABIVersion; +import org.opendaylight.controller.cluster.access.concepts.AbstractRequestProxy; +import org.opendaylight.controller.cluster.access.concepts.ClientIdentifier; +import org.opendaylight.controller.cluster.access.concepts.Request; +import org.opendaylight.controller.cluster.access.concepts.RequestException; + +/** + * Request to connect a frontend instance to the backend. It carries basic information about the frontend: + * - its coordinates in {@link #getReplyTo()}. + * - its minimum supported ABI version + * - its maximum supported ABI version + * + * It also includes request stream sequencing information. + * + * @author Robert Varga + */ +@Beta +public final class ConnectClientRequest extends Request { + private static final long serialVersionUID = 1L; + + private final ABIVersion minVersion; + private final ABIVersion maxVersion; + private final long resumeSequence; + + public ConnectClientRequest(final ClientIdentifier identifier, final ActorRef replyTo, final ABIVersion minVersion, + final ABIVersion maxVersion) { + this(identifier, replyTo, minVersion, maxVersion, 0); + } + + public ConnectClientRequest(final ClientIdentifier identifier, final ActorRef replyTo, final ABIVersion minVersion, + final ABIVersion maxVersion, final long resumeSequence) { + super(identifier, replyTo); + this.minVersion = Preconditions.checkNotNull(minVersion); + this.maxVersion = Preconditions.checkNotNull(maxVersion); + this.resumeSequence = resumeSequence; + } + + private ConnectClientRequest(final ConnectClientRequest request, final ABIVersion version) { + super(request, version); + this.minVersion = request.minVersion; + this.maxVersion = request.maxVersion; + this.resumeSequence = request.resumeSequence; + } + + public ABIVersion getMinVersion() { + return minVersion; + } + + public ABIVersion getMaxVersion() { + return maxVersion; + } + + public long getResumeSequence() { + return resumeSequence; + } + + @Override + public final ConnectClientFailure toRequestFailure(final RequestException cause) { + return new ConnectClientFailure(getTarget(), cause); + } + + @Override + protected AbstractRequestProxy externalizableProxy(final ABIVersion version) { + return new ConnectClientRequestProxyV1(this); + } + + @Override + protected ConnectClientRequest cloneAsVersion(final ABIVersion version) { + return new ConnectClientRequest(this, version); + } + + @Override + protected @Nonnull ToStringHelper addToStringAttributes(final @Nonnull ToStringHelper toStringHelper) { + return super.addToStringAttributes(toStringHelper).add("minVersion", minVersion).add("maxVersion", maxVersion) + .add("resumeSequence", resumeSequence); + } +}