package alma.logoot.network;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;
public class Network implements INetwork {
public static Network instance = null;
private IReceiveListener receiveListener;
private IAfterConnectionListener afterConnectionListener;
private NetworkServiceAsync service = GWT.create(NetworkService.class);
public Network() {
instance = this;
initReceive();
}
@Override
public void send(String o) {
System.out.println(o);
service.send(o, new AsyncCallback<Void>() {
@Override
public void onFailure(Throwable caught) {
System.out.println("Network.send.onFailure");
caught.printStackTrace();
}
@Override
public void onSuccess(Void result) {
System.out.println("Network.send.onSuccess");
}
});
}
@Override
public void connect() {
service.register(new AsyncCallback<Registration>() {
@Override
public void onFailure(Throwable caught) {
System.err.println("Network : Erreur enregistrement au serveur.");
caught.printStackTrace();
}
@Override
public void onSuccess(Registration registration) {
System.out.println("Network : Enregistrement au serveur: "
+ registration);
Network.this.afterConnectionListener.afterConnect(registration.getId(),
registration.getObject());
}
});
}
@Override
public void addReceiverListener(IReceiveListener listener) {
this.receiveListener = listener;
}
@Override
public void addAfterConectionListener(IAfterConnectionListener listener) {
this.afterConnectionListener = listener;
}
public native void initReceive() /*-{
var source = new EventSource('getData');
source.onmessage = function(event) {
try {
var text = event.data.replace(/<br>/g, '\n');
var me = @alma.logoot.network.Network::instance;
me.@alma.logoot.network.Network::receive(Ljava/lang/String;)(text);
} catch(err) {
console.log(err);
}
};
}-*/;
public void receive(String text) {
System.out.println("Network reception des donnees.." + text);
receiveListener.receive(text);
}
}