Bump versions 9.0.4-SNAPSHOT
[controller.git] / opendaylight / md-sal / cds-access-api / src / main / java / org / opendaylight / controller / cluster / access / concepts / RequestEnvelope.java
index 1c6e72c59a6596ea498cad2dbc432fd63934101b..e8983697cf659e56ad99fa347278d8c0df58e596 100644 (file)
@@ -10,6 +10,7 @@ package org.opendaylight.controller.cluster.access.concepts;
 import akka.actor.ActorRef;
 
 public final class RequestEnvelope extends Envelope<Request<?, ?>> {
+    @java.io.Serial
     private static final long serialVersionUID = 1L;
 
     public RequestEnvelope(final Request<?, ?> message, final long sessionId, final long txSequence) {
@@ -17,18 +18,20 @@ public final class RequestEnvelope extends Envelope<Request<?, ?>> {
     }
 
     @Override
-    RequestEnvelopeProxy createProxy() {
-        return new RequestEnvelopeProxy(this);
+    RE createProxy() {
+        return new RE(this);
     }
 
     /**
      * Respond to this envelope with a {@link RequestFailure} caused by specified {@link RequestException}.
      *
      * @param cause Cause of this {@link RequestFailure}
+     * @param executionTimeNanos Time to execute the request, in nanoseconds
      * @throws NullPointerException if cause is null
      */
-    public void sendFailure(final RequestException cause) {
-        sendResponse(new FailureEnvelope(getMessage().toRequestFailure(cause), getSessionId(), getTxSequence()));
+    public void sendFailure(final RequestException cause, final long executionTimeNanos) {
+        sendResponse(new FailureEnvelope(getMessage().toRequestFailure(cause), getSessionId(), getTxSequence(),
+            executionTimeNanos));
     }
 
     /**
@@ -37,8 +40,19 @@ public final class RequestEnvelope extends Envelope<Request<?, ?>> {
      * @param success Successful response
      * @throws NullPointerException if success is null
      */
-    public void sendSuccess(final RequestSuccess<?, ?> success) {
-        sendResponse(new SuccessEnvelope(success, getSessionId(), getTxSequence()));
+    public void sendSuccess(final RequestSuccess<?, ?> success, final long executionTimeNanos) {
+        sendResponse(newSuccessEnvelope(success, executionTimeNanos));
+    }
+
+    /**
+     * Creates a successful ResponseEnvelope that wraps the given successful Request response message.
+     *
+     * @param success the successful Request response message
+     * @param executionTimeNanos the execution time of the request
+     * @return a {@link ResponseEnvelope} instance
+     */
+    public ResponseEnvelope<?> newSuccessEnvelope(final RequestSuccess<?, ?> success, final long executionTimeNanos) {
+        return new SuccessEnvelope(success, getSessionId(), getTxSequence(), executionTimeNanos);
     }
 
     private void sendResponse(final ResponseEnvelope<?> envelope) {