com.quorum.tessera.discovery.DisabledAutoDiscovery Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of tessera-partyinfo Show documentation
Show all versions of tessera-partyinfo Show documentation
Tessera is a stateless Java system that is used to enable the encryption, decryption, and distribution of private transactions for Quorum.
package com.quorum.tessera.discovery;
import com.quorum.tessera.encryption.PublicKey;
import com.quorum.tessera.partyinfo.AutoDiscoveryDisabledException;
import com.quorum.tessera.partyinfo.node.NodeInfo;
import com.quorum.tessera.partyinfo.node.Recipient;
import java.net.URI;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;
public class DisabledAutoDiscovery implements Discovery {
private final NetworkStore networkStore;
private final Set knownPeers;
public DisabledAutoDiscovery(NetworkStore networkStore,Set knownPeers) {
this.networkStore = Objects.requireNonNull(networkStore);
this.knownPeers = knownPeers;
}
@Override
public void onUpdate(NodeInfo nodeInfo) {
if(!knownPeers.contains(NodeUri.create(nodeInfo.getUrl()))) {
throw new AutoDiscoveryDisabledException(String.format("%s is not a known peer", nodeInfo.getUrl()));
}
final NodeUri callerNodeUri = NodeUri.create(nodeInfo.getUrl());
final Set keys = nodeInfo.getRecipients().stream()
.filter(r -> NodeUri.create(r.getUrl()).equals(callerNodeUri))
.map(Recipient::getKey)
.collect(Collectors.toSet());
final ActiveNode activeNode = ActiveNode.Builder.create()
.withUri(callerNodeUri)
.withSupportedVersions(nodeInfo.supportedApiVersions())
.withKeys(keys)
.build();
networkStore.store(activeNode);
}
@Override
public void onDisconnect(URI nodeUri) {
networkStore.remove(NodeUri.create(nodeUri));
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy