Package it.freedomotic.gwtclient.client.api

Source Code of it.freedomotic.gwtclient.client.api.ACStompCallback

package it.freedomotic.gwtclient.client.api;

import com.furiousbob.jms.client.ConnectionCallback;
import com.furiousbob.jms.client.StompClient;
import com.google.gwt.core.client.GWT;
import com.google.gwt.core.client.Scheduler;
import com.google.gwt.core.client.Scheduler.RepeatingCommand;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONString;

public class ACStompCallback implements ConnectionCallback {

    private StompClient sc;
    private boolean connected = false;

    @Override
    public void onConnect() {
        GWT.log("STOMP: onConnect");
        //Window.alert("STOMP: onConnect");
        connected = true;
        subscribe();
    }

    public boolean isConnected() {
        return connected;

    }

    @Override
    public void onError(String cause) {
        GWT.log("ERROR STOMP: " + cause, new Throwable(cause));
        //Window.alert("ERROR STOMP: " + cause);
        if (sc != null) {
            Scheduler.get().scheduleFixedDelay(new RepeatingCommand() {
                @Override
                public boolean execute() {
                    GWT.log("STOMP retry...");
                    //Window.alert("STOMP retry...");
                    sc.connect();
                    return false;
                }
            }, 30000);
        }
    }

    @Override
    public void onDisconnect() {
        connected = false;
        GWT.log("STOMP: onDisconnect, will use " + sc + " to reconnect...");
        //Window.alert("STOMP: onDisconnect, will use " + sc + " to reconnect...");
    }

    public void setClient(StompClient sc) {
        // store client for reconnect attempt
        this.sc = sc;
    }

    public void subscribe() {
        String q = "/topic/VirtualTopic.app.event.sensor.object.behavior.change";
        //String q= "/queue/test";   
        if (q != null) {
            JSONObject header = new JSONObject();
            header.put("transformation", new JSONString("jms-object-xml"));
            sc.subscribe(q, new ACStompListener(sc), header.getJavaScriptObject());
            //sc.subscribe(q, new ACStompListener(sc));
            GWT.log("subscribed to queue " + q);
            //Window.alert("subscribed to queue " + q);

        }
    }
}
TOP

Related Classes of it.freedomotic.gwtclient.client.api.ACStompCallback

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.