package cn.darkal.networkdiagnosis.Task;
import android.content.Context;
import android.widget.TextView;
import com.netease.LDNetDiagnoService.LDNetDiagnoListener;
import com.netease.LDNetDiagnoService.LDNetDiagnoService;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import cn.darkal.networkdiagnosis.Utils.DeviceUtils;
/**
* Created by xuzhou on 2016/8/1.
*/
public class TraceTask extends BaseTask implements LDNetDiagnoListener {
String url;
TextView resultTextView;
Context context;
String result;
public TraceTask(Context context , String url, TextView resultTextView) {
super(url, resultTextView);
this.context = context;
this.url = url;
this.resultTextView = resultTextView;
}
@Override
public Runnable getExecRunnable() {
return execRunnable;
}
public Runnable execRunnable = new Runnable() {
@Override
public void run() {
try{
// TraceRouteWithPing traceRouteWithPing = new TraceRouteWithPing(url, TraceTask.this);
// traceRouteWithPing.executeTraceRoute();
LDNetDiagnoService _netDiagnoService = new LDNetDiagnoService(context.getApplicationContext(),
"NetworkDiagnosis", "网络诊断应用", DeviceUtils.getVersion(context), "",
"", url, "", "",
"", "", TraceTask.this);
// 设置是否使用JNIC 完成traceroute
_netDiagnoService.setIfUseJNICTrace(true);
_netDiagnoService.execute();
}
catch (Exception e){
resultTextView.post(new updateResultRunnable(e.toString() + "\n"));
}
}
};
public void setResult(String result){
Pattern pattern = Pattern.compile("(?<=rom )[\\w\\W]+(?=\\n\\n)");
Matcher matcher = pattern.matcher(result);
if(matcher.find()){
resultTextView.post(new updateResultRunnable(matcher.group(0) + "\n"));
}
}
@Override
public void OnNetDiagnoFinished(String log) {
}
@Override
public void OnNetDiagnoUpdated(String log) {
resultTextView.post(new updateResultRunnable(log));
}
}