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