MessagingService API enchancements
Change-Id: Iabfe15d4f08d7c53bd6575c5d94d0ac9f4e1a38e
diff --git a/core/api/src/main/java/org/onosproject/store/cluster/messaging/MessagingService.java b/core/api/src/main/java/org/onosproject/store/cluster/messaging/MessagingService.java
index 6ccd483..73f4258 100644
--- a/core/api/src/main/java/org/onosproject/store/cluster/messaging/MessagingService.java
+++ b/core/api/src/main/java/org/onosproject/store/cluster/messaging/MessagingService.java
@@ -17,8 +17,8 @@
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Executor;
-import java.util.function.Consumer;
-import java.util.function.Function;
+import java.util.function.BiConsumer;
+import java.util.function.BiFunction;
/**
* Interface for low level messaging primitives.
@@ -36,7 +36,7 @@
CompletableFuture<Void> sendAsync(Endpoint ep, String type, byte[] payload);
/**
- * Sends a message synchronously and waits for a response.
+ * Sends a message asynchronously and expects a response.
* @param ep end point to send the message to.
* @param type type of message.
* @param payload message payload.
@@ -45,12 +45,14 @@
CompletableFuture<byte[]> sendAndReceive(Endpoint ep, String type, byte[] payload);
/**
- * Registers a new message handler for message type.
- * @param type message type.
- * @param handler message handler
- * @param executor executor to use for running message handler logic.
+ * Sends a message synchronously and expects a response.
+ * @param ep end point to send the message to.
+ * @param type type of message.
+ * @param payload message payload.
+ * @param executor executor over which any follow up actions after completion will be executed.
+ * @return a response future
*/
- void registerHandler(String type, Consumer<byte[]> handler, Executor executor);
+ CompletableFuture<byte[]> sendAndReceive(Endpoint ep, String type, byte[] payload, Executor executor);
/**
* Registers a new message handler for message type.
@@ -58,14 +60,22 @@
* @param handler message handler
* @param executor executor to use for running message handler logic.
*/
- void registerHandler(String type, Function<byte[], byte[]> handler, Executor executor);
+ void registerHandler(String type, BiConsumer<Endpoint, byte[]> handler, Executor executor);
+
+ /**
+ * Registers a new message handler for message type.
+ * @param type message type.
+ * @param handler message handler
+ * @param executor executor to use for running message handler logic.
+ */
+ void registerHandler(String type, BiFunction<Endpoint, byte[], byte[]> handler, Executor executor);
/**
* Registers a new message handler for message type.
* @param type message type.
* @param handler message handler
*/
- void registerHandler(String type, Function<byte[], CompletableFuture<byte[]>> handler);
+ void registerHandler(String type, BiFunction<Endpoint, byte[], CompletableFuture<byte[]>> handler);
/**
* Unregister current handler, if one exists for message type.