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.concepts;
10 import akka.actor.ActorRef;
12 public final class RequestEnvelope extends Envelope<Request<?, ?>> {
13 private static final long serialVersionUID = 1L;
15 public RequestEnvelope(final Request<?, ?> message, final long sessionId, final long txSequence) {
16 super(message, sessionId, txSequence);
20 RequestEnvelopeProxy createProxy() {
21 return new RequestEnvelopeProxy(this);
25 * Respond to this envelope with a {@link RequestFailure} caused by specified {@link RequestException}.
27 * @param cause Cause of this {@link RequestFailure}
28 * @param executionTimeNanos Time to execute the request, in nanoseconds
29 * @throws NullPointerException if cause is null
31 public void sendFailure(final RequestException cause, final long executionTimeNanos) {
32 sendResponse(new FailureEnvelope(getMessage().toRequestFailure(cause), getSessionId(), getTxSequence(),
37 * Respond to this envelope with a {@link RequestSuccess}.
39 * @param success Successful response
40 * @throws NullPointerException if success is null
42 public void sendSuccess(final RequestSuccess<?, ?> success, final long executionTimeNanos) {
43 sendResponse(newSuccessEnvelope(success, executionTimeNanos));
47 * Creates a successful ResponseEnvelope that wraps the given successful Request response message.
49 * @param success the successful Request response message
50 * @param executionTimeNanos the execution time of the request
51 * @return a {@link ResponseEnvelope} instance
53 public ResponseEnvelope<?> newSuccessEnvelope(final RequestSuccess<?, ?> success, final long executionTimeNanos) {
54 return new SuccessEnvelope(success, getSessionId(), getTxSequence(), executionTimeNanos);
57 private void sendResponse(final ResponseEnvelope<?> envelope) {
58 getMessage().getReplyTo().tell(envelope, ActorRef.noSender());