diff options
author | Goblin911 <[email protected]> | 2013-08-26 11:16:39 +0800 |
---|---|---|
committer | Goblin911 <[email protected]> | 2013-08-26 11:16:39 +0800 |
commit | 686cf083c79fce3a032d229bb1b7ea8ed49046c0 (patch) | |
tree | 7cf2c333b0c63e8286a58f84215bfb55b8f83fb6 /client/Piztor/src/com/macaroon/piztor/Transam.java | |
parent | 6400b18210587cb25b475bc2d3979b9a6da5eda4 (diff) |
add new network, but userinfo need to rewrite.
Diffstat (limited to 'client/Piztor/src/com/macaroon/piztor/Transam.java')
-rw-r--r-- | client/Piztor/src/com/macaroon/piztor/Transam.java | 332 |
1 files changed, 194 insertions, 138 deletions
diff --git a/client/Piztor/src/com/macaroon/piztor/Transam.java b/client/Piztor/src/com/macaroon/piztor/Transam.java index 3410502..481a676 100644 --- a/client/Piztor/src/com/macaroon/piztor/Transam.java +++ b/client/Piztor/src/com/macaroon/piztor/Transam.java @@ -1,139 +1,195 @@ -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 setHandler(Handler Recall) { - recall = Recall; - reqtask.clear(); - } - - 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; - } - } - }; +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; + +// Piztor Transmission Protocol v0.3a // + +//------------------------------------------------// +// // +// *return msg type* // +// 0 for login // +// 1 for updateLocation // +// 2 for locationRequest // +// 3 for userinfo // +// // +// ----------I'm the division line-------- // +// // +// 100 for timeOut // +// 101 for conection failed // +// 102 for reconnect // +// 103 for IOexception // +// 104 for UnknownHostException // +// // +// ----------I'm the division line-------- // +// // +// *Request form* // +// login -- username & password // +//update -- token & username & latitude & longitude// +// getlocation -- token & username & groupid // +// getuserinfo -- token & userinfo & userid // +// // +// ----------I'm the division line-------- // +// // +// *Respond form* // +// login -- status & userid & token // +// update -- status // +// getlocation -- status & entrynumber & data // +// entry -- userid & latitude & longitude // +// // +// getuserinfo -- status & RUserinfo(base class) // +// 0 RKeyGroupID -- groupid // +// 1 RKeyGender -- gender // +// // +// status -- 0 for success // +// 1 for failed/invalid // +// // +//------------------------------------------------// + +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 setHandler(Handler Recall){ + recall = Recall; + reqtask.clear(); + } + + 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(); + Message msg = new Message(); + msg.obj = "UnknownHostException"; + msg.what = 104; + recall.sendMessage(msg); + } catch (IOException e) { + e.printStackTrace(); + Message msg = new Message(); + msg.obj = "IOException"; + msg.what = 103; + recall.sendMessage(msg); + } + + } + } + + @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--; + Message msg = new Message(); + msg.obj = "Reconnect for rest " + cnt + " times"; + msg.what = 102; + recall.sendMessage(msg); + Message m = new Message(); + msg.what = 2; + handler.sendMessage(m); + } 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 |