You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuweni.apache.org by to...@apache.org on 2019/04/23 23:08:57 UTC

[incubator-tuweni] 16/43: Expose hash of the payload separately from the payload

This is an automated email from the ASF dual-hosted git repository.

toulmean pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-tuweni.git

commit b6df939659f3e1b976fb5711ee245195b0bf614d
Author: Antoine Toulme <to...@apache.org>
AuthorDate: Sat Apr 6 23:29:02 2019 -0700

    Expose hash of the payload separately from the payload
---
 .../main/java/org/apache/tuweni/plumtree/MessageSender.java    |  3 ++-
 plumtree/src/main/java/org/apache/tuweni/plumtree/State.java   | 10 +++++-----
 .../org/apache/tuweni/plumtree/vertx/VertxGossipServer.java    |  4 +++-
 .../src/test/java/org/apache/tuweni/plumtree/StateTest.java    |  8 +++++---
 4 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/plumtree/src/main/java/org/apache/tuweni/plumtree/MessageSender.java b/plumtree/src/main/java/org/apache/tuweni/plumtree/MessageSender.java
index 01aac1a..ea18d67 100644
--- a/plumtree/src/main/java/org/apache/tuweni/plumtree/MessageSender.java
+++ b/plumtree/src/main/java/org/apache/tuweni/plumtree/MessageSender.java
@@ -33,7 +33,8 @@ public interface MessageSender {
    * 
    * @param verb the type of message
    * @param peer the target of the message
+   * @param hash the hash of the message
    * @param payload the bytes to send
    */
-  void sendMessage(Verb verb, Peer peer, @Nullable Bytes payload);
+  void sendMessage(Verb verb, Peer peer, Bytes hash, @Nullable Bytes payload);
 }
diff --git a/plumtree/src/main/java/org/apache/tuweni/plumtree/State.java b/plumtree/src/main/java/org/apache/tuweni/plumtree/State.java
index f35f358..bc776e0 100644
--- a/plumtree/src/main/java/org/apache/tuweni/plumtree/State.java
+++ b/plumtree/src/main/java/org/apache/tuweni/plumtree/State.java
@@ -80,7 +80,7 @@ public final class State {
         if (sender == null || messageValidator.validate(message, sender)) {
           for (Peer peer : peerRepository.eagerPushPeers()) {
             if (sender == null || !sender.equals(peer)) {
-              messageSender.sendMessage(MessageSender.Verb.GOSSIP, peer, message);
+              messageSender.sendMessage(MessageSender.Verb.GOSSIP, peer, hash, message);
             }
           }
           lazyQueue.addAll(
@@ -88,13 +88,13 @@ public final class State {
                   .lazyPushPeers()
                   .stream()
                   .filter(p -> !lazyPeers.contains(p))
-                  .map(peer -> (Runnable) (() -> messageSender.sendMessage(MessageSender.Verb.IHAVE, peer, hash)))
+                  .map(peer -> (Runnable) (() -> messageSender.sendMessage(MessageSender.Verb.IHAVE, peer, hash, null)))
                   .collect(Collectors.toList()));
           messageListener.accept(message);
         }
       } else {
         if (sender != null) {
-          messageSender.sendMessage(MessageSender.Verb.PRUNE, sender, null);
+          messageSender.sendMessage(MessageSender.Verb.PRUNE, sender, hash, null);
           peerRepository.moveToLazy(sender);
         }
       }
@@ -108,7 +108,7 @@ public final class State {
           if (newPeerIndex == lazyPeers.size()) {
             newPeerIndex = 0;
           }
-          messageSender.sendMessage(MessageSender.Verb.GRAFT, lazyPeers.get(index), hash);
+          messageSender.sendMessage(MessageSender.Verb.GRAFT, lazyPeers.get(index), hash, null);
           scheduleGraftMessage(newPeerIndex++);
         }
       };
@@ -237,7 +237,7 @@ public final class State {
    */
   public void receiveGraftMessage(Peer peer, Bytes messageHash) {
     peerRepository.moveToEager(peer);
-    messageSender.sendMessage(MessageSender.Verb.GOSSIP, peer, messageHash);
+    messageSender.sendMessage(MessageSender.Verb.GOSSIP, peer, messageHash, null);
   }
 
   /**
diff --git a/plumtree/src/main/java/org/apache/tuweni/plumtree/vertx/VertxGossipServer.java b/plumtree/src/main/java/org/apache/tuweni/plumtree/vertx/VertxGossipServer.java
index 303ac60..fe2cf24 100644
--- a/plumtree/src/main/java/org/apache/tuweni/plumtree/vertx/VertxGossipServer.java
+++ b/plumtree/src/main/java/org/apache/tuweni/plumtree/vertx/VertxGossipServer.java
@@ -47,6 +47,7 @@ public final class VertxGossipServer {
   private static final class Message {
 
     public MessageSender.Verb verb;
+    public String hash;
     public String payload;
   }
   private final class SocketHandler {
@@ -135,9 +136,10 @@ public final class VertxGossipServer {
         if (res.failed()) {
           completion.completeExceptionally(res.cause());
         } else {
-          state = new State(peerRepository, messageHashing, (verb, peer, payload) -> {
+          state = new State(peerRepository, messageHashing, (verb, peer, hash, payload) -> {
             Message message = new Message();
             message.verb = verb;
+            message.hash = hash.toHexString();
             message.payload = payload == null ? null : payload.toHexString();
             try {
               ((SocketPeer) peer).socket().write(Buffer.buffer(mapper.writeValueAsBytes(message)));
diff --git a/plumtree/src/test/java/org/apache/tuweni/plumtree/StateTest.java b/plumtree/src/test/java/org/apache/tuweni/plumtree/StateTest.java
index 3dfb206..be5f110 100644
--- a/plumtree/src/test/java/org/apache/tuweni/plumtree/StateTest.java
+++ b/plumtree/src/test/java/org/apache/tuweni/plumtree/StateTest.java
@@ -37,12 +37,14 @@ class StateTest {
 
     Verb verb;
     Peer peer;
+    Bytes hash;
     Bytes payload;
 
     @Override
-    public void sendMessage(Verb verb, Peer peer, Bytes payload) {
+    public void sendMessage(Verb verb, Peer peer, Bytes hash, Bytes payload) {
       this.verb = verb;
       this.peer = peer;
+      this.hash = hash;
       this.payload = payload;
 
     }
@@ -139,7 +141,7 @@ class StateTest {
     assertEquals(msg, messageSender.payload);
     assertEquals(otherPeer, messageSender.peer);
     state.processQueue();
-    assertEquals(Hash.keccak256(msg), messageSender.payload);
+    assertEquals(Hash.keccak256(msg), messageSender.hash);
     assertEquals(lazyPeer, messageSender.peer);
     assertEquals(MessageSender.Verb.IHAVE, messageSender.verb);
   }
@@ -174,7 +176,7 @@ class StateTest {
     Bytes message = Bytes32.random();
     state.receiveIHaveMessage(lazyPeer, message);
     Thread.sleep(200);
-    assertEquals(message, messageSender.payload);
+    assertEquals(message, messageSender.hash);
     assertEquals(lazyPeer, messageSender.peer);
     assertEquals(MessageSender.Verb.GRAFT, messageSender.verb);
   }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@tuweni.apache.org
For additional commands, e-mail: commits-help@tuweni.apache.org