vertx_react.verticles.EventsVerticle.java Source code

Java tutorial

Introduction

Here is the source code for vertx_react.verticles.EventsVerticle.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package vertx_react.verticles;

import io.vertx.core.AbstractVerticle;
import io.vertx.core.Future;
import io.vertx.core.eventbus.EventBus;
import io.vertx.core.eventbus.Message;
import io.vertx.core.json.Json;
import io.vertx.core.json.JsonArray;
import io.vertx.core.json.JsonObject;
import io.vertx.core.logging.Logger;
import io.vertx.core.logging.LoggerFactory;
import java.util.Calendar;
import java.util.List;
import java.util.Random;
import java.util.stream.Collectors;

/**
 *
 * @author ezequiel
 */
public class EventsVerticle extends AbstractVerticle {
    private static final Logger log = LoggerFactory.getLogger(WebApp.class);

    @Override
    public void start(Future<Void> startFuture) throws Exception {
        EventBus eb = this.getVertx().eventBus();
        eb.consumer("incoming", (Message<JsonObject> handler) -> {
            JsonObject m = handler.body();
            JsonArray ja = new JsonArray(getRandomArray());
            JsonObject j = new JsonObject().put("table", m.getInteger("table")).put("openSeats", ja);
            handler.reply(j);
            log.info(Json.encodePrettily(m.encodePrettily()));
        });
        super.start(startFuture);
    }

    private List<Integer> getRandomArray() {
        Random r = new Random(Calendar.getInstance().getTimeInMillis());
        return r.ints(4, 0, 7).boxed().filter(number -> number < 4).map((number) -> {
            return number + 1;
        }).collect(Collectors.toList());
    }
}