Search in sources :

Example 1 with GalaxyStore

use of co.paralleluniverse.db.store.galaxy.GalaxyStore 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;
}
Also used : GalaxyStore(co.paralleluniverse.db.store.galaxy.GalaxyStore) Record(co.paralleluniverse.data.record.Record) SpaceBaseBuilder(co.paralleluniverse.spacebase.quasar.SpaceBaseBuilder)

Aggregations

Record (co.paralleluniverse.data.record.Record)1 GalaxyStore (co.paralleluniverse.db.store.galaxy.GalaxyStore)1 SpaceBaseBuilder (co.paralleluniverse.spacebase.quasar.SpaceBaseBuilder)1