Bug 2187: AddServer unit test and bug fixes
[controller.git] / opendaylight / md-sal / sal-akka-raft / src / main / java / org / opendaylight / controller / cluster / raft / base / messages / ApplySnapshot.java
index 54ee02a057ec1805d70e1a15cc264ab3eb0ea956..3c43d809b9c55ed5456850e0b875a1bb2df433a1 100644 (file)
@@ -8,22 +8,49 @@
 
 package org.opendaylight.controller.cluster.raft.base.messages;
 
+import com.google.common.base.Preconditions;
+import javax.annotation.Nonnull;
 import org.opendaylight.controller.cluster.raft.Snapshot;
 
-import java.io.Serializable;
-
 /**
  * Internal message, issued by follower to its actor
  */
-public class ApplySnapshot implements Serializable {
-    private static final long serialVersionUID = 1L;
+public class ApplySnapshot {
     private final Snapshot snapshot;
+    private final Callback callback;
 
     public ApplySnapshot(Snapshot snapshot) {
-        this.snapshot = snapshot;
+        this(snapshot, NOOP_CALLBACK);
+    }
+
+    public ApplySnapshot(@Nonnull Snapshot snapshot, @Nonnull Callback callback) {
+        this.snapshot = Preconditions.checkNotNull(snapshot);
+        this.callback = Preconditions.checkNotNull(callback);
     }
 
+    @Nonnull
     public Snapshot getSnapshot() {
         return snapshot;
     }
+
+    @Nonnull
+    public Callback getCallback() {
+        return callback;
+    }
+
+    public interface Callback {
+        void onSuccess();
+
+        void onFailure();
+    }
+
+    public static Callback NOOP_CALLBACK = new Callback() {
+        @Override
+        public void onSuccess() {
+        }
+
+        @Override
+        public void onFailure() {
+        }
+    };
 }