package com.koushikdutta.async.http.socketio; import android.util.Log; import com.koushikdutta.async.util.HashList; import org.json.JSONArray; import java.util.Iterator; import java.util.List; /** * Created by koush on 7/1/13. */ public class EventEmitter { interface OnceCallback extends EventCallback { } HashList<EventCallback> callbacks = new HashList<EventCallback>(); void onEvent(String event, JSONArray arguments, Acknowledge acknowledge) { // Log.e("EventCallback", event); List<EventCallback> list = callbacks.get(event); if (list == null) return; Iterator<EventCallback> iter = list.iterator(); while (iter.hasNext()) { EventCallback cb = iter.next(); cb.onEvent(arguments, acknowledge); if (cb instanceof OnceCallback) iter.remove(); } } public void addListener(String event, EventCallback callback) { on(event, callback); } public void once(final String event, final EventCallback callback) { on(event, new OnceCallback() { @Override public void onEvent(JSONArray arguments, Acknowledge acknowledge) { callback.onEvent(arguments, acknowledge); } }); } public void on(String event, EventCallback callback) { callbacks.add(event, callback); } public void removeListener(String event, EventCallback callback) { List<EventCallback> list = callbacks.get(event); if (list == null) return; list.remove(callback); } }