@Override
    public void getConfig(ProtonConfig.Builder builder) {
        builder.
            rpcport(getRpcPort()).
            httpport(getHttpPort()).
            clustername(getClusterName()).
            basedir(getBaseDir()).
            tlsspec("tcp/" + getHost().getHostname() + ":" + getTlsPort()).
            tlsconfigid(getConfigId()).
            slobrokconfigid(getClusterConfigId()).
            routingconfigid(getClusterConfigId()).
            distributionkey(getDistributionKey());
        if (isHostedVespa) {
            // 4 days, 1 hour, 1 minute due to failed nodes can be in failed for 4 days and we want at least one hour more
            // to make sure the node failer has done its work
            builder.pruneremoveddocumentsage(4 * 24 * 3600 + 3600 + 60);
        }
        Optional<NodeResources> nodeResources = getSpecifiedNodeResources();
        if (nodeResources.isPresent()) {
            int threadsPerSearch = tuning != null ? tuning.threadsPerSearch() : 1;
            var nodeResourcesTuning = new NodeResourcesTuning(nodeResources.get(), threadsPerSearch, fractionOfMemoryReserved);
            nodeResourcesTuning.getConfig(builder);

            if (tuning != null) tuning.getConfig(builder);
            if (resourceLimits != null) resourceLimits.getConfig(builder);
        }
    }
Represents a search node (proton).
<p>
Due to the current disconnect between StorageNode and SearchNode, we have to
duplicate the set of RestartConfigs classes from StorageNode here, as SearchNode
runs in a content/storage node context without this being immediately obvious
in the model.

@author arnej27959
@author hmusum
config-model/src/main/java/com/yahoo/vespa/model/search/SearchNode.java