All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.quorum.tessera.discovery.DisabledAutoDiscovery Maven / Gradle / Ivy

Go to download

Tessera is a stateless Java system that is used to enable the encryption, decryption, and distribution of private transactions for Quorum.

There is a newer version: 24.4.2
Show newest version
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