examples.SharedDataExamples.java Source code

Java tutorial

Introduction

Here is the source code for examples.SharedDataExamples.java

Source

/*
 * Copyright 2014 Red Hat, Inc.
 *
 *  All rights reserved. This program and the accompanying materials
 *  are made available under the terms of the Eclipse Public License v1.0
 *  and Apache License v2.0 which accompanies this distribution.
 *
 *  The Eclipse Public License is available at
 *  http://www.eclipse.org/legal/epl-v10.html
 *
 *  The Apache License v2.0 is available at
 *  http://www.opensource.org/licenses/apache2.0.php
 *
 *  You may elect to redistribute this code under either of these licenses.
 */

package examples;

import io.vertx.core.DeploymentOptions;
import io.vertx.core.Vertx;
import io.vertx.core.buffer.Buffer;
import io.vertx.core.net.*;
import io.vertx.core.shareddata.*;

/**
 * Created by tim on 19/01/15.
 */
public class SharedDataExamples {

    public void example1(Vertx vertx) {

        SharedData sd = vertx.sharedData();

        LocalMap<String, String> map1 = sd.getLocalMap("mymap1");

        map1.put("foo", "bar"); // Strings are immutable so no need to copy

        LocalMap<String, Buffer> map2 = sd.getLocalMap("mymap2");

        map2.put("eek", Buffer.buffer().appendInt(123)); // This buffer will be copied before adding to map

        // Then... in another part of your application:

        map1 = sd.getLocalMap("mymap1");

        String val = map1.get("foo");

        map2 = sd.getLocalMap("mymap2");

        Buffer buff = map2.get("eek");
    }

    public void example2(Vertx vertx) {

        SharedData sd = vertx.sharedData();

        sd.<String, String>getClusterWideMap("mymap", res -> {
            if (res.succeeded()) {
                AsyncMap<String, String> map = res.result();
            } else {
                // Something went wrong!
            }
        });

    }

    public void example3(AsyncMap<String, String> map) {

        map.put("foo", "bar", resPut -> {
            if (resPut.succeeded()) {
                // Successfully put the value
            } else {
                // Something went wrong!
            }
        });

    }

    public void example4(AsyncMap<String, String> map) {

        map.get("foo", resGet -> {
            if (resGet.succeeded()) {
                // Successfully got the value
                Object val = resGet.result();
            } else {
                // Something went wrong!
            }
        });

    }

    public void example5(Vertx vertx, SharedData sd) {
        sd.getLock("mylock", res -> {
            if (res.succeeded()) {
                // Got the lock!
                Lock lock = res.result();

                // 5 seconds later we release the lock so someone else can get it

                vertx.setTimer(5000, tid -> lock.release());

            } else {
                // Something went wrong
            }
        });
    }

    public void example6(SharedData sd) {
        sd.getLockWithTimeout("mylock", 10000, res -> {
            if (res.succeeded()) {
                // Got the lock!
                Lock lock = res.result();

            } else {
                // Failed to get lock
            }
        });
    }

    public void example7(SharedData sd) {
        sd.getCounter("mycounter", res -> {
            if (res.succeeded()) {
                Counter counter = res.result();
            } else {
                // Something went wrong!
            }
        });
    }

}