package org.corfudb.infrastructure;
import com.google.common.collect.ImmutableMap;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* Created by mwei on 6/29/16.
*/
@Accessors(chain = true)
@Data
// Disable magic number check to make defaults readable
@SuppressWarnings("checkstyle:magicnumber")
public class ServerContextBuilder {
long initialToken = 0L; // for testing, we want to reset the sequencer on each test
boolean single = true;
boolean memory = true;
String logPath = null;
boolean noVerify = false;
boolean tlsEnabled = false;
String cacheSizeHeapRatio = "0.5";
String address = "test";
int port = 9000;
String managementBootstrapEndpoint = null;
IServerRouter serverRouter;
public ServerContextBuilder() {
}
public ServerContext build() {
ImmutableMap.Builder<String,Object> builder =
new ImmutableMap.Builder<String, Object>()
.put("--initial-token", initialToken)
.put("--single", single)
.put("--memory", memory);
if (logPath != null) {
builder.put("--log-path", logPath);
}
if (managementBootstrapEndpoint != null) {
builder.put("--management-server", managementBootstrapEndpoint);
}
builder
.put("--no-verify", noVerify)
.put("--address", address)
.put("--cache-heap-ratio", cacheSizeHeapRatio)
.put("--enable-tls", tlsEnabled)
.put("<port>", port);
return new ServerContext(builder.build(), serverRouter);
}
public static ServerContext defaultContext(int port) {
return new ServerContextBuilder().setPort(port).build();
}
public static ServerContext emptyContext() {
return new ServerContextBuilder().build();
}
}