From fc0082ad265e4ff63da9de8a59880658b3a726df Mon Sep 17 00:00:00 2001 From: chimp1984 Date: Wed, 7 Oct 2020 13:35:10 -0500 Subject: [PATCH] Use getSingleThreadListeningExecutor, cleanups --- p2p/src/main/java/bisq/network/p2p/P2PService.java | 13 +++++-------- .../network/p2p/PrefixedSealedAndSignedMessage.java | 7 ++++--- .../java/bisq/network/p2p/network/Connection.java | 1 - .../java/bisq/network/p2p/peers/PeerManager.java | 2 +- 4 files changed, 10 insertions(+), 13 deletions(-) diff --git a/p2p/src/main/java/bisq/network/p2p/P2PService.java b/p2p/src/main/java/bisq/network/p2p/P2PService.java index b36a67c0a73..f129127941a 100644 --- a/p2p/src/main/java/bisq/network/p2p/P2PService.java +++ b/p2p/src/main/java/bisq/network/p2p/P2PService.java @@ -289,7 +289,7 @@ public void onTorNodeReady() { if (!seedNodesAvailable) { isBootstrapped = true; - // As we do not expect a updated data request response we start here listening + // As we do not expect a updated data request response we start here with addHashMapChangedListenerAndApply addHashMapChangedListenerAndApply(); p2pServiceListeners.stream().forEach(P2PServiceListener::onNoSeedNodeAvailable); } @@ -351,7 +351,7 @@ public void onUpdatedDataReceived() { if (!isBootstrapped) { isBootstrapped = true; // Only now we start listening and processing. The p2PDataStorage is our cache for data we have received - // so far. + // after the hidden service was ready. addHashMapChangedListenerAndApply(); p2pServiceListeners.stream().forEach(P2PServiceListener::onUpdatedDataReceived); p2PDataStorage.onBootstrapComplete(); @@ -458,7 +458,7 @@ private void processSingleMailboxEntry(Collection // We run the batch processing of all mailbox messages we have received at startup in a thread to not block the UI. // For about 1000 messages decryption takes about 1 sec. private void threadedBatchProcessMailboxEntries(Collection protectedMailboxStorageEntries) { - ListeningExecutorService executor = Utilities.getSingleThreadExecutor("processMailboxEntry-" + new Random().nextInt(1000)); + ListeningExecutorService executor = Utilities.getSingleThreadListeningExecutor("processMailboxEntry-" + new Random().nextInt(1000)); long ts = System.currentTimeMillis(); ListenableFuture>> future = executor.submit(() -> { var decryptedEntries = getDecryptedEntries(protectedMailboxStorageEntries); @@ -557,7 +557,6 @@ private void doSendEncryptedDirectMessage(@NotNull NodeAddress peersNodeAddress, // Prefix is not needed for direct messages but as old code is doing the verification we still need to // send it if peer has not updated. - // TODO persist capability PrefixedSealedAndSignedMessage sealedMsg = getPrefixedSealedAndSignedMessage(peersNodeAddress, pubKeyRing, message); @@ -615,12 +614,10 @@ public void sendEncryptedMailboxMessage(NodeAddress peer, PubKeyRing peersPubKey return; } - checkNotNull(peer, - "PeerAddress must not be null (sendEncryptedMailboxMessage)"); + checkNotNull(peer, "PeerAddress must not be null (sendEncryptedMailboxMessage)"); checkNotNull(networkNode.getNodeAddress(), "My node address must not be null at sendEncryptedMailboxMessage"); - checkArgument(!keyRing.getPubKeyRing().equals(peersPubKeyRing), - "We got own keyring instead of that from peer"); + checkArgument(!keyRing.getPubKeyRing().equals(peersPubKeyRing), "We got own keyring instead of that from peer"); if (!isBootstrapped()) throw new NetworkNotReadyException(); diff --git a/p2p/src/main/java/bisq/network/p2p/PrefixedSealedAndSignedMessage.java b/p2p/src/main/java/bisq/network/p2p/PrefixedSealedAndSignedMessage.java index 9f6177ba596..bf617dce114 100644 --- a/p2p/src/main/java/bisq/network/p2p/PrefixedSealedAndSignedMessage.java +++ b/p2p/src/main/java/bisq/network/p2p/PrefixedSealedAndSignedMessage.java @@ -34,8 +34,8 @@ public final class PrefixedSealedAndSignedMessage extends NetworkEnvelope implem private final NodeAddress senderNodeAddress; private final SealedAndSigned sealedAndSigned; - // From v1.4.0 on that can be an empty byte array. We cannot use null as not updated nodes would get a nullPointer - // at protobuf serialisation. + // From v1.4.0 on addressPrefixHash can be an empty byte array. + // We cannot make it nullable as not updated nodes would get a nullPointer exception at protobuf serialisation. private final byte[] addressPrefixHash; private final String uid; @@ -75,7 +75,8 @@ public protobuf.NetworkEnvelope toProtoNetworkEnvelope() { .build(); } - public static PrefixedSealedAndSignedMessage fromProto(protobuf.PrefixedSealedAndSignedMessage proto, int messageVersion) { + public static PrefixedSealedAndSignedMessage fromProto(protobuf.PrefixedSealedAndSignedMessage proto, + int messageVersion) { return new PrefixedSealedAndSignedMessage(NodeAddress.fromProto(proto.getNodeAddress()), SealedAndSigned.fromProto(proto.getSealedAndSigned()), proto.getAddressPrefixHash().toByteArray(), diff --git a/p2p/src/main/java/bisq/network/p2p/network/Connection.java b/p2p/src/main/java/bisq/network/p2p/network/Connection.java index 2a28158aac5..6a29c7e0343 100644 --- a/p2p/src/main/java/bisq/network/p2p/network/Connection.java +++ b/p2p/src/main/java/bisq/network/p2p/network/Connection.java @@ -911,5 +911,4 @@ private String getSenderNodeAddressAsString(NetworkEnvelope networkEnvelope) { NodeAddress nodeAddress = getSenderNodeAddress(networkEnvelope); return nodeAddress == null ? "null" : nodeAddress.getFullAddress(); } - } diff --git a/p2p/src/main/java/bisq/network/p2p/peers/PeerManager.java b/p2p/src/main/java/bisq/network/p2p/peers/PeerManager.java index 15cb5508b80..9ec74dc2eb9 100644 --- a/p2p/src/main/java/bisq/network/p2p/peers/PeerManager.java +++ b/p2p/src/main/java/bisq/network/p2p/peers/PeerManager.java @@ -213,7 +213,7 @@ public boolean peerHasCapability(NodeAddress peersNodeAddress, Capability capabi .orElse(false); } - // TODO persist Capabilities + // TODO get Capabilities from peers public Optional findPeersCapabilities(NodeAddress peersNodeAddress) { return networkNode.getConfirmedConnections().stream() .filter(c -> c.getPeersNodeAddressProperty().get() != null)