public byte[] toBytes(){ int totalSize = Long.BYTES * 2; List<byte[]> serversData = new ArrayList<byte[]>(this.servers.size()); for(int i = 0; i < this.servers.size(); ++i){ ClusterServer server = this.servers.get(i); byte[] dataForServer = server.toBytes(); totalSize += dataForServer.length; serversData.add(dataForServer); } ByteBuffer buffer = ByteBuffer.allocate(totalSize); buffer.putLong(this.logIndex); buffer.putLong(this.lastLogIndex); for(int i = 0; i < serversData.size(); ++i){ buffer.put(serversData.get(i)); } return buffer.array(); } }
/** * Serialize the cluster configuration into a buffer * this is used for the leader to serialize a new cluster configuration and replicate to peers * @return binary data that represents the cluster configuration */ public byte[] toBytes(){ int totalSize = Long.BYTES * 2; List<byte[]> serversData = new ArrayList<byte[]>(this.servers.size()); for(int i = 0; i < this.servers.size(); ++i){ ClusterServer server = this.servers.get(i); byte[] dataForServer = server.toBytes(); totalSize += dataForServer.length; serversData.add(dataForServer); } ByteBuffer buffer = ByteBuffer.allocate(totalSize); buffer.putLong(this.logIndex); buffer.putLong(this.lastLogIndex); for(int i = 0; i < serversData.size(); ++i){ buffer.put(serversData.get(i)); } return buffer.array(); } }
/** * Serialize the cluster configuration into a buffer * this is used for the leader to serialize a new cluster configuration and replicate to peers * @return binary data that represents the cluster configuration */ public byte[] toBytes(){ int totalSize = Long.BYTES * 2; List<byte[]> serversData = new ArrayList<byte[]>(this.servers.size()); for(int i = 0; i < this.servers.size(); ++i){ ClusterServer server = this.servers.get(i); byte[] dataForServer = server.toBytes(); totalSize += dataForServer.length; serversData.add(dataForServer); } ByteBuffer buffer = ByteBuffer.allocate(totalSize); buffer.putLong(this.logIndex); buffer.putLong(this.lastLogIndex); for(int i = 0; i < serversData.size(); ++i){ buffer.put(serversData.get(i)); } return buffer.array(); } }
public CompletableFuture<Boolean> addServer(ClusterServer server){ if(server == null){ throw new IllegalArgumentException("server cannot be null"); } LogEntry[] logEntries = new LogEntry[1]; logEntries[0] = new LogEntry(0, server.toBytes(), LogValueType.ClusterServer); RaftRequestMessage request = new RaftRequestMessage(); request.setMessageType(RaftMessageType.AddServerRequest); request.setLogEntries(logEntries); CompletableFuture<Boolean> result = new CompletableFuture<Boolean>(); this.tryCurrentLeader(request, result, 0, 0); return result; }
public CompletableFuture<Boolean> addServer(ClusterServer server){ if(server == null){ throw new IllegalArgumentException("server cannot be null"); } LogEntry[] logEntries = new LogEntry[1]; logEntries[0] = new LogEntry(0, server.toBytes(), LogValueType.ClusterServer); RaftRequestMessage request = new RaftRequestMessage(); request.setMessageType(RaftMessageType.AddServerRequest); request.setLogEntries(logEntries); CompletableFuture<Boolean> result = new CompletableFuture<Boolean>(); this.tryCurrentLeader(request, result, 0, 0); return result; }
public CompletableFuture<Boolean> addServer(ClusterServer server){ if(server == null){ throw new IllegalArgumentException("server cannot be null"); } LogEntry[] logEntries = new LogEntry[1]; logEntries[0] = new LogEntry(0, server.toBytes(), LogValueType.ClusterServer); RaftRequestMessage request = new RaftRequestMessage(); request.setMessageType(RaftMessageType.AddServerRequest); request.setLogEntries(logEntries); CompletableFuture<Boolean> result = new CompletableFuture<Boolean>(); this.tryCurrentLeader(request, result, 0, 0); return result; }
@Override public CompletableFuture<Boolean> addServer(ClusterServer server) { LogEntry[] logEntries = new LogEntry[1]; logEntries[0] = new LogEntry(0, server.toBytes(), LogValueType.ClusterServer); RaftRequestMessage request = new RaftRequestMessage(); request.setMessageType(RaftMessageType.AddServerRequest); request.setLogEntries(logEntries); return this.sendMessageToLeader(request); }
@Override public CompletableFuture<Boolean> addServer(ClusterServer server) { LogEntry[] logEntries = new LogEntry[1]; logEntries[0] = new LogEntry(0, server.toBytes(), LogValueType.ClusterServer); RaftRequestMessage request = new RaftRequestMessage(); request.setMessageType(RaftMessageType.AddServerRequest); request.setLogEntries(logEntries); return this.sendMessageToLeader(request); }
@Override public CompletableFuture<Boolean> addServer(ClusterServer server) { LogEntry[] logEntries = new LogEntry[1]; logEntries[0] = new LogEntry(0, server.toBytes(), LogValueType.ClusterServer); RaftRequestMessage request = new RaftRequestMessage(); request.setMessageType(RaftMessageType.AddServerRequest); request.setLogEntries(logEntries); return this.sendMessageToLeader(request); }