/** * Returns a new multi-Raft protocol builder. * * @param group the partition group * @return the multi-Raft protocol builder */ public static MultiRaftProtocolBuilder builder(String group) { return new MultiRaftProtocolBuilder(new MultiRaftProtocolConfig().setGroup(group)); }
@Override public String group() { return config.getGroup(); }
@Override public <S> ProxyClient<S> newProxy(String primitiveName, PrimitiveType primitiveType, Class<S> serviceType, ServiceConfig serviceConfig, PartitionService partitionService) { PartitionGroup partitionGroup = partitionService.getPartitionGroup(this); if (partitionGroup == null) { throw new ConfigurationException("No Raft partition group matching the configured protocol exists"); } Collection<SessionClient> partitions = partitionGroup.getPartitions().stream() .map(partition -> ((RaftPartition) partition).getClient() .sessionBuilder(primitiveName, primitiveType, serviceConfig) .withMinTimeout(config.getMinTimeout()) .withMaxTimeout(config.getMaxTimeout()) .withReadConsistency(config.getReadConsistency()) .withCommunicationStrategy(config.getCommunicationStrategy()) .withRecoveryStrategy(config.getRecoveryStrategy()) .withMaxRetries(config.getMaxRetries()) .withRetryDelay(config.getRetryDelay()) .build()) .collect(Collectors.toList()); return new DefaultProxyClient<>(primitiveName, primitiveType, this, serviceType, partitions, config.getPartitioner()); } }
@Override public MultiRaftProtocolConfig newConfig() { return new MultiRaftProtocolConfig(); }
/** * Returns an instance of the multi-Raft protocol with the default configuration. * * @return an instance of the multi-Raft protocol with the default configuration */ public static MultiRaftProtocol instance() { return new MultiRaftProtocol(new MultiRaftProtocolConfig()); }
/** * Returns a new multi-Raft protocol builder. * * @return a new multi-Raft protocol builder */ public static MultiRaftProtocolBuilder builder() { return new MultiRaftProtocolBuilder(new MultiRaftProtocolConfig()); }