/**
* Transmitter that is supported by TCP protocol
*/
package com.cgcl.cloudesk.manage.net;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketAddress;
import com.cgcl.cloudesk.manage.com.Handler;
import com.cgcl.cloudesk.manage.log.LogService;
import com.cgcl.cloudesk.manage.packet.PacketBase;
import com.cgcl.cloudesk.screens.act.BaseActivity;
public class Transmitter implements Transmittable, Handler {
private Handler handler = null;
private Socket sock = null;
private InputThread inputThread = null;
private OutputThread outputThread = null;
/*static boolean connectionOK = true;
static int connectionResult = 0;
*/
public Transmitter(Handler handler, String remoteHost, String port) throws Exception
{
// config
this.handler = handler;
sock = new Socket();
SocketAddress socketAddress = new InetSocketAddress(remoteHost, Integer.parseInt(port));
sock.connect(socketAddress, 4000);
//sock.setSoTimeout(5000);
inputThread = new InputThread( this, sock.getInputStream() );
outputThread = new OutputThread( sock.getOutputStream() );
LogService.getInstance().WriteLog("sock = " + sock + " inputThread = " + inputThread + " outputThread = " + outputThread);
}
public void start()
{
System.out.println("6");
inputThread.start();
System.out.println("7");
outputThread.start();
System.out.println("8");
}
public void terminate()
{
inputThread.terminate();
outputThread.terminate();
try {
sock.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
inputThread.join();
outputThread.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void sendPacket(PacketBase packet) {
packet.setLen( packet.length() );
outputThread.output(packet);
}
public void handle(PacketBase packet) {
handler.handle(packet);
}
}