use of co.paralleluniverse.spacebase.quasar.SpaceBaseBuilder in project spaceships-demo by puniverse.
the class Spaceships method initSpaceBase.
/**
* reads properties file and creates a SpaceBase instance with the requested properties.
*/
private SpaceBase<Record<SpaceshipState>> initSpaceBase(Properties props) {
final boolean optimistic = Boolean.parseBoolean(props.getProperty("optimistic", "true"));
final int optimisticHeight = Integer.parseInt(props.getProperty("optimistic-height", "1"));
final int optimisticRetryLimit = Integer.parseInt(props.getProperty("optimistic-retry-limit", "3"));
final boolean compressed = Boolean.parseBoolean(props.getProperty("compressed", "false"));
final boolean singlePrecision = Boolean.parseBoolean(props.getProperty("single-precision", "false"));
final int nodeWidth = Integer.parseInt(props.getProperty("node-width", "10"));
println("SpaceBase properties");
println("Optimistic: " + optimistic);
println("Optimistic height: " + optimisticHeight);
println("Optimistic retry limit: " + optimisticRetryLimit);
println("Node width: " + nodeWidth);
println("Compressed: " + compressed);
println("Single precision: " + singlePrecision);
println();
SpaceBaseBuilder builder = new SpaceBaseBuilder();
if (glxNode > 0)
builder.setStore(GalaxyStore.class);
builder.setQueueBackpressure(1000);
if (optimistic)
builder.setOptimisticLocking(optimisticHeight, optimisticRetryLimit);
else
builder.setPessimisticLocking();
builder.setDimensions(2);
builder.setSinglePrecision(singlePrecision).setCompressed(compressed);
builder.setNodeWidth(nodeWidth);
builder.setMonitoringType(MonitorType.JMX);
if (metricsDir != null) {
com.codahale.metrics.CsvReporter.forRegistry(Metrics.registry()).convertRatesTo(TimeUnit.SECONDS).convertDurationsTo(TimeUnit.MILLISECONDS).build(metricsDir).start(1, TimeUnit.SECONDS);
}
final SpaceBase<Record<SpaceshipState>> space = builder.build("base1");
if (glxNode > 0) {
GalaxyStore store = (GalaxyStore) space.getStore();
store.addMigrationListener(new MigrationListener<Record<SpaceshipState>>() {
@Override
public void immigrating(Record<SpaceshipState> record) {
try {
Actor.hire(record.get($spaceship));
} catch (SuspendExecution e) {
throw new AssertionError(e);
}
}
@Override
public void emigrating(Record<SpaceshipState> record) {
System.out.println("Spaceship leaving: " + record);
}
});
}
return space;
}
Aggregations