package com.num.tasks; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import org.json.JSONObject; import android.content.Context; import android.location.Location; import android.os.Handler; import android.os.Message; import android.util.Log; import com.num.Values; import com.num.database.datasource.LatencyDataSource; import com.num.helpers.MeasurementHelper; import com.num.helpers.ThreadPoolHelper; import com.num.listeners.BaseResponseListener; import com.num.listeners.FakeListener; import com.num.listeners.ResponseListener; import com.num.models.Address; import com.num.models.Battery; import com.num.models.Device; import com.num.models.GPS; import com.num.models.LastMile; import com.num.models.Link; import com.num.models.Loss; import com.num.models.Measurement; import com.num.models.Network; import com.num.models.Ping; import com.num.models.Screen; import com.num.models.Sim; import com.num.models.Throughput; import com.num.models.Traceroute; import com.num.models.TracerouteEntry; import com.num.models.Usage; import com.num.models.WarmupExperiment; import com.num.models.Wifi; /* * Measurement Task * set tasks to run and give ip address to ping and more * * Call another task to backend * * */ public class AllTraceroutesTask extends ServerTask{ Measurement measurement; ThreadPoolHelper serverhelperTraceroute; int startindex; int endindex; Address dst; Traceroute traceroute; public AllTraceroutesTask(Context context, Map<String, String> reqParams, Address dst, int startindex, int endindex, ResponseListener listener) { super(context, new HashMap<String,String>(), listener); this.startindex = startindex; this.endindex = endindex; this.dst = dst; traceroute = new Traceroute(startindex, endindex); } public AllTraceroutesTask(Context context, Map<String, String> reqParams, Address dst, int endindex, ResponseListener listener) { super(context, new HashMap<String,String>(), listener); this.startindex = 2; this.endindex = endindex; this.dst = dst; traceroute = new Traceroute(startindex, endindex); } public void killAll(){ try{ serverhelperTraceroute.shutdown(); } catch(Exception e){ } } public void runTask() { MeasurementListener listener= new MeasurementListener(); Values session = this.getValues(); ThreadPoolHelper serverhelperTraceroute = new ThreadPoolHelper(20,session.THREADPOOL_KEEPALIVE_SEC); for(int i = 2; i < 20; i++) { serverhelperTraceroute.execute(new TracerouteTask(getContext(),new HashMap<String,String>(),dst, i ,listener)); } serverhelperTraceroute.waitOnTasks(); (new MeasurementListener()).onCompleteTraceroute(traceroute); } @Override public String toString() { return "All Traceroute Task"; } private class MeasurementListener extends BaseResponseListener{ public void onCompletePing(Ping response) { } public void onComplete(String response) { } public void onCompleteMeasurement(Measurement response) { getResponseListener().onCompleteMeasurement(response); } public void onCompleteDevice(Device response) { getResponseListener().onCompleteDevice(response); } public void onUpdateProgress(int val) { // TODO Auto-generated method stub } public void onCompleteGPS(GPS gps) { measurement.setGps(gps); getResponseListener().onCompleteGPS(gps); } public void makeToast(String text) { getResponseListener().makeToast(text); } public void onCompleteSignal(String signalStrength) { } public void onCompleteUsage(Usage usage) { measurement.setUsage(usage); getResponseListener().onCompleteUsage(usage); } public void onCompleteThroughput(Throughput throughput) { measurement.setThroughput(throughput); getResponseListener().onCompleteThroughput(throughput); } public void onCompleteWifi(Wifi wifi) { //if (wifiRunning) //{ // wifiRunning = false; measurement.setWifi(wifi); getResponseListener().onCompleteWifi(wifi); //} } public void onCompleteNetwork(Network network) { getResponseListener().onCompleteNetwork(network); } public void onCompleteSIM(Sim sim) { getResponseListener().onCompleteSIM(sim); } public void onCompleteBattery(Battery response) { measurement.setBattery(response); getResponseListener().onCompleteBattery(response); } public void onCompleteSummary(JSONObject Object) { // TODO Auto-generated method stub } public void onFail(String response) { // TODO Auto-generated method stub } public void onCompleteLastMile(LastMile lastMile) { } public void onUpdateUpLink(Link link) { // TODO Auto-generated method stub } public void onUpdateDownLink(Link link) { // TODO Auto-generated method stub } public void onUpdateThroughput(Throughput throughput) { // TODO Auto-generated method stub } public void onCompleteTraceroute(Traceroute traceroute) { getResponseListener().onCompleteTraceroute(traceroute); } public void onCompleteTracerouteHop(TracerouteEntry traceroutehop) { traceroute.addToList(traceroutehop); getResponseListener().onCompleteTraceroute(traceroute); } public void onCompleteWarmupExperiment(WarmupExperiment experiment) { // TODO Auto-generated method stub } public void onCompleteLoss(Loss loss) { // TODO Auto-generated method stub } } }