package floobits.common.protocol.handlers; import com.google.gson.JsonObject; import floobits.common.FlooUrl; import floobits.common.OutboundRequestHandler; import floobits.common.interfaces.IContext; import floobits.common.protocol.Connection; import floobits.utilities.Flog; abstract public class BaseHandler { public FlooUrl url; public boolean isJoined = false; protected Connection conn; public IContext context; public OutboundRequestHandler outbound; public BaseHandler(IContext context) { this.context = context; } void _on_error(JsonObject jsonObject) { String reason = jsonObject.get("msg").getAsString(); reason = String.format("Floobits Error: %s", reason); Flog.error(reason); if (jsonObject.has("flash") && jsonObject.get("flash").getAsBoolean()) { context.errorMessage(reason); context.flashMessage(reason); } } void _on_disconnect(JsonObject jsonObject) { String reason = jsonObject.get("reason").getAsString(); if (reason != null) { context.errorMessage(String.format("You have been disconnected from the workspace because %s", reason)); context.flashMessage("You have been disconnected from the workspace."); } else { context.statusMessage("You have left the workspace"); } context.shutdown(); } protected abstract void _on_data(String name, JsonObject obj); public void on_data(String name, JsonObject obj) { if (name.equals("error")) { _on_error(obj); return; } if (name.equals("disconnect")) { _on_disconnect(obj); return; } _on_data(name, obj); } public abstract void on_connect(); public FlooUrl getUrl() { return url; } public void go() { isJoined = true; } public void shutdown() { if (conn != null) { conn.shutdown(); conn = null; } isJoined = false; } }