Package org.atmosphere.gwt.js

Source Code of org.atmosphere.gwt.js.Client

/*
* Copyright 2011 Jeanfrancois Arcand
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/

package org.atmosphere.gwt.js;

import com.google.gwt.core.client.GWT;
import com.google.gwt.core.client.JavaScriptObject;
import java.io.Serializable;
import java.util.List;
import org.atmosphere.gwt.client.AtmosphereClient;
import org.atmosphere.gwt.client.AtmosphereListener;
import org.timepedia.exporter.client.Export;
import org.timepedia.exporter.client.ExportPackage;
import org.timepedia.exporter.client.Exportable;

/**
*
* @author p.havelaar
*/
@ExportPackage("atmosphere")
public class Client implements Exportable {

    private JsSerializer serializer = GWT.create(JsSerializer.class);
    private AtmosphereClient impl;
    private OnMessage onMessage;
    private OnError onError;
    private OnConnected onConnected;
    private OnDisconnected onDisconnected;
    private OnBeforeDisconnected onBeforeDisconnected;
    private OnHeartbeat onHeartbeat;
   
    @Export
    public Client(String url) {
        impl = new AtmosphereClient(url, serializer, listener);
    }

    @Export
    public void start() {
        impl.start();
    }

    @Export
    public void stop() {
        impl.stop();
    }

    @Export void post(JavaScriptObject message) {
        impl.post(encodeJSON(message));
    }

    @Export void broadcast(JavaScriptObject message) {
        impl.broadcast(encodeJSON(message));
    }

    private AtmosphereListener listener = new AtmosphereListener() {
        @Override
        public void onConnected(int heartbeat, int connectionID) {
            if (onConnected != null) {
                onConnected.execute(heartbeat, connectionID);
            }
        }
        @Override
        public void onBeforeDisconnected() {
            if (onBeforeDisconnected != null) {
                onBeforeDisconnected.execute();
            }
        }
        @Override
        public void onDisconnected() {
            if (onDisconnected != null) {
                onDisconnected.execute();
            }
        }
        @Override
        public void onError(Throwable exception, boolean connected) {
            if (onError != null) {
                onError.execute(exception.getMessage(), connected);
            }
        }
        @Override
        public void onHeartbeat() {
            if (onHeartbeat != null) {
                onHeartbeat.execute();
            }
        }
        @Override
        public void onRefresh() {
        }
        @Override
        public void onMessage(List<? extends Serializable> messages) {
            if (onMessage != null) {
                for (Serializable m : messages) {
                    onMessage.execute(decodeJSON((String)m));
                }
            }
        }
    };
   
    @Export
    public void setOnMessage(OnMessage function) {
        onMessage = function;
    }

    @Export
    public void setOnError(OnError function) {
        onError = function;
    }

    @Export
    public void setOnBeforeDisconnected(OnBeforeDisconnected onBeforeDisconnected) {
        this.onBeforeDisconnected = onBeforeDisconnected;
    }

    @Export
    public void setOnConnected(OnConnected onConnected) {
        this.onConnected = onConnected;
    }

    @Export
    public void setOnDisconnected(OnDisconnected onDisconnected) {
        this.onDisconnected = onDisconnected;
    }

    @Export
    public void setOnHeartbeat(OnHeartbeat onHeartbeat) {
        this.onHeartbeat = onHeartbeat;
    }

    private native String encodeJSON(JavaScriptObject obj) /*-{
        return JSON.encode(obj);
    }-*/;

    private native JavaScriptObject decodeJSON(String json) /*-{
        return JSON.decode(json);
    }-*/;

   
}
TOP

Related Classes of org.atmosphere.gwt.js.Client

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.