diff options
author | goblin911 <goblinliu@gmail.com> | 2013-08-25 21:18:19 +0800 |
---|---|---|
committer | goblin911 <goblinliu@gmail.com> | 2013-08-25 21:18:19 +0800 |
commit | 0e687f12bd2653adb55ea002b39292678366c525 (patch) | |
tree | 0ad073ec8ff2ed2716adf23a679184c38df582a1 /client/.metadata/.plugins/org.eclipse.core.resources/.history/62/f050f6cd300d00131249f322b63acde8 | |
parent | 2efdc2f20f0306791ced5ec78a1acddfaf086f42 (diff) |
...
Diffstat (limited to 'client/.metadata/.plugins/org.eclipse.core.resources/.history/62/f050f6cd300d00131249f322b63acde8')
-rw-r--r-- | client/.metadata/.plugins/org.eclipse.core.resources/.history/62/f050f6cd300d00131249f322b63acde8 | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/client/.metadata/.plugins/org.eclipse.core.resources/.history/62/f050f6cd300d00131249f322b63acde8 b/client/.metadata/.plugins/org.eclipse.core.resources/.history/62/f050f6cd300d00131249f322b63acde8 new file mode 100644 index 0000000..c31924d --- /dev/null +++ b/client/.metadata/.plugins/org.eclipse.core.resources/.history/62/f050f6cd300d00131249f322b63acde8 @@ -0,0 +1,132 @@ +package com.macaroon.piztor; + +import java.io.IOException; +import java.net.UnknownHostException; +import java.util.LinkedList; +import java.util.Queue; +import java.util.Timer; +import java.util.TimerTask; + +import android.annotation.SuppressLint; +import android.os.Handler; +import android.os.Message; + +public class Transam implements Runnable { + public Timer timer; + public Timer mtimer; + public boolean running = false; + public boolean flag = true; + public int cnt = 4; + Res res; + Req req; + public int p; //port + public String i; //ip + Thread thread; + Handler core; + Handler recall; //recall + Queue<Req> reqtask ; //request task + + Transam(String ip, int port,Handler Recall) { + p = port; + i = ip; + recall = Recall; + reqtask = new LinkedList<Req>(); + } + + public void send(Req r){ + reqtask.offer(r); + + } + + public void run() { //start the main timer + //TimerTask tmain = new Timertk(); + //mtimer = new Timer(); + //mtimer.schedule(tmain, 100, 100); //check the queue for every 100 msec + + while(true){ + if(running == false){ + + if(!reqtask.isEmpty()){ //poll the head request + req = reqtask.poll(); + if(req.time + req.alive < System.currentTimeMillis()){ //time out! + Message ret = new Message(); + ret.obj = "Time out!"; + ret.what = 100; + recall.sendMessage(ret); + } + else{ //run the request + final thd t = new thd(); + flag = false; + thread = new Thread(t); + cnt = 4; + running = true; + thread.start(); + timer = new Timer(); + TimerTask task = new Timertk(); + timer.schedule(task, 2000, 2000); + } + } + } + } + } + + class tmain extends TimerTask { + public void run() { + + } + }; + + class thd implements Runnable { + public void run() { + try { + SocketClient client = new SocketClient(i,p); + client.sendMsg(req,recall); + Message msg = new Message(); + msg.what = 1; + handler.sendMessage(msg); + client.closeSocket(); + } catch (UnknownHostException e) { + e.printStackTrace(); + System.out.println("UnknownHostException"); + } catch (IOException e) { + e.printStackTrace(); + System.out.println("IOException"); + } + + } + } + + @SuppressLint("HandlerLeak") + Handler handler = new Handler() { + public void handleMessage(Message msg) { + switch (msg.what) { + case 1: + flag = true; + break; + case 2: + final thd t = new thd(); + thread = new Thread(t); + thread.start(); + break; + } + super.handleMessage(msg); + } + }; + + class Timertk extends TimerTask { + public void run() { + if (flag == false && cnt > 0) { + cnt--; + } else if (cnt == 0) { + Message msg = new Message(); + msg.obj = "connecting failed"; + msg.what = 101; + recall.sendMessage(msg); + timer.cancel(); + } else if (flag == true) { + timer.cancel(); + running = false; + } + } + }; +}
\ No newline at end of file |