Example usage for io.vertx.core.shareddata LocalMap put

List of usage examples for io.vertx.core.shareddata LocalMap put

Introduction

In this page you can find the example usage for io.vertx.core.shareddata LocalMap put.

Prototype

V put(K key, V value);

Source Link

Document

Put an entry in the map

Usage

From source file:examples.SharedDataExamples.java

License:Open Source License

public void example1(Vertx vertx) {

    SharedData sd = vertx.sharedData();/* w ww . j a v a  2 s .  c o m*/

    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");
}

From source file:io.flowly.engine.verticles.Build.java

License:Open Source License

private Handler<Message<Object>> deployAppHandler() {
    return message -> {
        App app = App.toApp((JsonObject) message.body());
        LocalMap<String, Boolean> deployedAppsMap = vertx.sharedData().getLocalMap(DEPLOYED_APPS_KEY);
        Boolean appExists = deployedAppsMap.get(app.getId());

        if (appExists != null && appExists) {
            Failure failure = new Failure(4001, "App is already deployed: " + app.getId());
            logger.error(failure.getError());
            message.fail(failure.getCode(), failure.getMessage());
        } else {/*from w ww .  j  a va  2s .  c  om*/
            // Add the app to the local map.
            deployedAppsMap.put(app.getId(), true);

            String appFolder = app.getAppFolder();
            String verticlesPath = PathUtils.createPath(appFolder, PathUtils.VERTICLES_FOLDER);

            vertx.executeBlocking(future -> {
                try {
                    prepareVerticlesFolderBlocking(app, verticlesPath);

                    // Parse flows.
                    List<Flow> flows = parseFlowsBlocking(appFolder);

                    // Build flows.
                    buildFlowsBlocking(app, flows, future, deployedAppsMap);
                } catch (Exception ex) {
                    Failure failure = new Failure(4002,
                            "Unable to compile flow verticles for app: " + app.getId(), ex);
                    logger.error(failure.getError(), failure.getCause());
                    future.fail(failure);
                }

            }, r -> {
                if (r.succeeded()) {
                    message.reply(true);
                } else {
                    message.fail(4002, r.cause().getMessage());
                }
            });
        }
    };
}

From source file:org.azrul.langmera.QLearningAnalytics.java

@Override
public void learn(DecisionFeedback currentFeedback, Vertx vertx, Runnable responseAction) {

    LocalMap<String, DetailDecisionFeedback> decisionFeedbackMap = vertx.sharedData()
            .getLocalMap("DECISION_FEEDBACK");
    LocalMap<String, DecisionRequest> decisionRequestMap = vertx.sharedData().getLocalMap("DECISION_REQUEST");
    LocalMap<String, DecisionResponse> decisionResponseMap = vertx.sharedData()
            .getLocalMap("DECISION_RESPONSE");
    LocalMap<String, Double> q = vertx.sharedData().getLocalMap("Q");
    LocalMap<Long, String> trackers = vertx.sharedData().getLocalMap("FEEDBACK_TRACKER");

    int feedbackCount = decisionFeedbackMap.size();
    boolean skipLearning = false;
    if (decisionRequestMap.get(currentFeedback.getDecisionId()) == null) {
        skipLearning = true;/*from   w ww .  jav  a 2s. c om*/
    }
    if (decisionResponseMap.get(currentFeedback.getDecisionId()) == null) {
        skipLearning = true;
    }
    if (skipLearning == false) {
        String context = decisionRequestMap.get(currentFeedback.getDecisionId()).getContext();
        String decision = decisionResponseMap.get(currentFeedback.getDecisionId()).getDecision();

        DetailDecisionFeedback detailFB = new DetailDecisionFeedback();
        detailFB.setFeedback(currentFeedback);
        detailFB.setContext(context);
        detailFB.setDecision(decision);
        decisionFeedbackMap.put(currentFeedback.getDecisionId(), detailFB);

        Long trackerKey = (new Date()).getTime();
        trackers.put(trackerKey, currentFeedback.getDecisionId());

        int feedbackCountByDecision = 0;
        List<Double> rewards = new ArrayList<>();
        for (DetailDecisionFeedback fb : decisionFeedbackMap.values()) {
            if (context.equals(decisionFeedbackMap.get(fb.getFeedback().getDecisionId()).getContext())
                    && decision
                            .equals(decisionFeedbackMap.get(fb.getFeedback().getDecisionId()).getDecision())) {
                feedbackCountByDecision++;
                rewards.add(fb.getFeedback().getScore());
            }
        }

        Double w = 0.0;
        Double alpha = config.getProperty("alpha", Double.class);

        //if no step parameter is configured, calculate it
        if (alpha == null) {
            alpha = 1.0 / (feedbackCountByDecision);
        }

        //non-stationary q-learning
        int i = 0;
        for (Double ri : rewards) {
            i++;
            w = w + alpha * (Math.pow(1 - alpha, feedbackCountByDecision - i)) * ri;
        }
        Double newQ = w;

        //System.out.println(feedbackCount+" Q:["+context + ":" + decision+"]"+newQ);
        //save what we learn
        if (newQ.isInfinite() || newQ.isNaN()) {
            //skip
        } else {
            String key = context + ":" + decision;
            q.put(key, newQ);
        }

        //Limit the number of history taken into account - prevents memory leak
        if (feedbackCount > config.getProperty("maxHistoryRetained", Integer.class)) {
            Long tk = Collections.min(trackers.keySet());
            String decisionIDWithMinTracker = trackers.get(tk);
            decisionFeedbackMap.remove(decisionIDWithMinTracker);
            trackers.remove(tk);
        }

        //clear cached req/resp once the feedback has come back
        decisionRequestMap.remove(currentFeedback.getDecisionId());
        decisionResponseMap.remove(currentFeedback.getDecisionId());

        //Get maxQ
        Double maxQ = Double.NEGATIVE_INFINITY;
        String decisionWithMaxQ = null;
        for (String contextDecision : q.keySet()) {
            if (q.get(contextDecision) > maxQ) {
                decisionWithMaxQ = contextDecision;
                maxQ = q.get(contextDecision);
            }
        }

        //keep traces
        if (Boolean.TRUE.equals(config.getProperty("collect.traces", Boolean.class))) {
            Date now = new Date();
            for (String contextDecision : q.keySet()) {
                List<Double> qtrace = traces.get(contextDecision);
                if (qtrace == null) {
                    qtrace = new ArrayList<Double>();
                    qtrace.add(q.get(contextDecision));
                    traces.put(contextDecision, qtrace);
                } else {
                    qtrace.add(q.get(contextDecision));
                }
                String[] c = contextDecision.split(":");
                Trace trace = new Trace(currentFeedback.getDecisionId(), c[0], q.get(contextDecision), maxQ,
                        now, c[1], currentFeedback.getScore());
                vertx.eventBus().publish("SAVE_TRACE_TO_TRACE",
                        SerializationUtils.serialize((Serializable) trace));
            }
        }

        //            //put in in-memory DB
        //            
        //            
        //            String[] c = decisionWithMaxQ.split(":");
        //            if (InMemoryDB.store.get(0)==null){
        //                List<Object> imContext = new ArrayList<Object>();
        //                imContext.add(c[0]);
        //                InMemoryDB.store.add(0,imContext);
        //            }else{
        //                InMemoryDB.store.get(0).add(c[0]);
        //            }
        //            
        //            if (InMemoryDB.store.get(1)==null){
        //                List<Object> imDecision = new ArrayList<Object>();
        //                imDecision.add(c[1]);
        //                InMemoryDB.store.add(1,imDecision);
        //            }else{
        //                InMemoryDB.store.get(1).add(c[1]);
        //            }
        //            
        //            if (InMemoryDB.store.get(2)==null){
        //                List<Object> imMaxQ = new ArrayList<Object>();
        //                imMaxQ.add(maxQ);
        //                InMemoryDB.store.add(2,imMaxQ);
        //            }else{
        //                InMemoryDB.store.get(2).add(maxQ);
        //            }
        //            
        //            if (InMemoryDB.store.get(3)==null){
        //                List<Object> imTime= new ArrayList<Object>();
        //                imTime.add(new Date());
        //                InMemoryDB.store.add(3,imTime);
        //            }else{
        //                InMemoryDB.store.get(3).add(new Date());
        //            }

        responseAction.run();
        if (Boolean.TRUE.equals(currentFeedback.getTerminal())) {
            long delta = (new Date()).getTime() - startTime;
            System.out.println("Time taken to process " + feedbackCount + " msgs:" + delta + " ms");
            System.out.println("Time taken per msg: " + (delta / feedbackCount) + " ms");
            System.out
                    .println("Msgs per s: " + ((1000.0 * (double) feedbackCount) / ((double) delta)) + " msgs");
            if (Boolean.TRUE.equals(config.getProperty("collect.traces", Boolean.class))
                    && Boolean.TRUE.equals(config.getProperty("display.desktop.chart", Boolean.class))) {
                final LineChart demo = new LineChart(chartDesc, traces);
                demo.pack();
                demo.setVisible(true);
            }
        }
    } else {
        logger.log(Level.WARNING, "Attempt to learn from a feedback with no corresponding request/response");
        responseAction.run();
    }
    //
    //select qmovies,qsports,qconcerts from 
    //   (select t1.qvalue as qsports,t1.decisionid from trace t1 where t1.decision='SPORTS' order by t1.decisiontime) as A1 
    //   join (select t2.qvalue as qmovies,t2.decisionid from trace t2 where t2.decision='MOVIES' order by t2.decisiontime) as A2 on A1.decisionid = A2.decisionid
    //   join (select t3.qvalue as qconcerts,t3.decisionid from trace t3 where t3.decision='CONCERTS' order by t3.decisiontime) as A3 on A1.decisionid = A3.decisionid

}

From source file:org.entcore.infra.Starter.java

License:Open Source License

@Override
public void start() {
    try {//w  ww.  j a v  a 2s. c  o  m
        super.start();
        final LocalMap<Object, Object> serverMap = vertx.sharedData().getLocalMap("server");

        serverMap.put("signKey", config.getString("key", "zbxgKWuzfxaYzbXcHnK3WnWK" + Math.random()));
        CookieHelper.getInstance().init((String) vertx.sharedData().getLocalMap("server").get("signKey"), log);

        JsonObject swift = config.getJsonObject("swift");
        if (swift != null) {
            serverMap.put("swift", swift.encode());
        }
        JsonObject emailConfig = config.getJsonObject("emailConfig");
        if (emailConfig != null) {
            serverMap.put("emailConfig", emailConfig.encode());
        }
        JsonObject filesystem = config.getJsonObject("file-system");
        if (filesystem != null) {
            serverMap.put("file-system", filesystem.encode());
        }
        JsonObject neo4jConfig = config.getJsonObject("neo4jConfig");
        if (neo4jConfig != null) {
            serverMap.put("neo4jConfig", neo4jConfig.encode());
        }
        final String csp = config.getString("content-security-policy");
        if (isNotEmpty(csp)) {
            serverMap.put("contentSecurityPolicy", csp);
        }
        serverMap.put("gridfsAddress", config.getString("gridfs-address", "wse.gridfs.persistor"));
        //initModulesHelpers(node);

        /* sharedConf sub-object */
        JsonObject sharedConf = config.getJsonObject("sharedConf", new JsonObject());
        for (String field : sharedConf.fieldNames()) {
            serverMap.put(field, sharedConf.getValue(field));
        }

        vertx.sharedData().getLocalMap("skins")
                .putAll(config.getJsonObject("skins", new JsonObject()).getMap());

        final MessageConsumer<JsonObject> messageConsumer = vertx.eventBus()
                .localConsumer("app-registry.loaded");
        messageConsumer.handler(message -> {
            //            JsonSchemaValidator validator = JsonSchemaValidator.getInstance();
            //            validator.setEventBus(getEventBus(vertx));
            //            validator.setAddress(node + "json.schema.validator");
            //            validator.loadJsonSchema(getPathPrefix(config), vertx);
            registerGlobalWidgets(
                    config.getString("widgets-path", config.getString("assets-path", ".") + "/assets/widgets"));
            loadInvalidEmails();
            messageConsumer.unregister();
        });
    } catch (Exception ex) {
        log.error(ex.getMessage());
    }
    JsonObject eventConfig = config.getJsonObject("eventConfig", new JsonObject());
    EventStoreService eventStoreService = new MongoDbEventStore();
    EventStoreController eventStoreController = new EventStoreController(eventConfig);
    eventStoreController.setEventStoreService(eventStoreService);
    addController(eventStoreController);
    addController(new MonitoringController());
    addController(new EmbedController());
    if (config.getBoolean("antivirus", false)) {
        ClamAvService antivirusService = new ClamAvService();
        antivirusService.setVertx(vertx);
        antivirusService.setTimeline(new TimelineHelper(vertx, getEventBus(vertx), config));
        antivirusService.setRender(new Renders(vertx, config));
        antivirusService.init();
        AntiVirusController antiVirusController = new AntiVirusController();
        antiVirusController.setAntivirusService(antivirusService);
        addController(antiVirusController);
        vertx.deployVerticle(ExecCommandWorker.class.getName(), new DeploymentOptions().setWorker(true));
    }
}

From source file:org.jberet.vertx.rest.JBeretRouterConfig.java

License:Open Source License

private static void scheduleJob(final RoutingContext routingContext) {
    final String jobXmlName = routingContext.pathParam("jobXmlName");
    final HttpServerRequest request = routingContext.request();
    final String delayString = request.getParam("delay");
    final long delay = delayString == null ? DEFAULT_SCHEDULE_DELAY : Long.parseLong(delayString);
    final String periodicString = request.getParam("periodic");
    final boolean periodic = periodicString != null && Boolean.parseBoolean(periodicString);

    final Properties jobParams = getJobParameters(routingContext);
    final JobSchedule jobSchedule = new JobSchedule();
    jobSchedule.setDelay(delay);//from w ww  .  j a  v a 2 s . c  o  m
    jobSchedule.setJobName(jobXmlName);
    jobSchedule.setJobParameters(jobParams);

    final long delayMillis = delay * 60 * 1000;
    final long timerId;
    final Vertx vertx = routingContext.vertx();
    if (!periodic) {
        timerId = vertx.setTimer(delayMillis, timerId1 -> {
            final JobExecutionEntity jobExecutionEntity = JobService.getInstance().start(jobXmlName, jobParams);
            setJobExecutionEntityHref(routingContext, jobExecutionEntity);
            jobSchedule.addJobExecutionIds(jobExecutionEntity.getExecutionId());
            jobSchedule.setStatus(JobSchedule.Status.DONE);
        });
    } else {
        timerId = vertx.setPeriodic(delayMillis, timerId1 -> {
            final JobExecutionEntity jobExecutionEntity = JobService.getInstance().start(jobXmlName, jobParams);
            setJobExecutionEntityHref(routingContext, jobExecutionEntity);
            jobSchedule.addJobExecutionIds(jobExecutionEntity.getExecutionId());

            //                 since this is periodic timer, there may be more in the future
            //                jobSchedule.setStatus(JobSchedule.Status.DONE);
        });
    }
    jobSchedule.setId(timerId);
    final LocalMap<String, JobSchedule> timerLocalMap = getTimerLocalMap(vertx);
    timerLocalMap.put(String.valueOf(timerId), jobSchedule);
    final JsonObject jsonObject = JsonObject.mapFrom(jobSchedule);
    sendJsonResponse(routingContext, jsonObject.encodePrettily());
}

From source file:org.pac4j.vertx.cas.VertxLocalSharedDataLogoutHandler.java

License:Apache License

@Override
protected void doRecordSession(String sessionId, String ticket) {
    final LocalMap<String, String> localMap = vertx.sharedData().getLocalMap(PAC4J_CAS_SHARED_DATA_KEY);
    localMap.put(ticket, sessionId);
}