/*
* Connection.java
*
* Created on November 22, 2004, 6:01 PM
*/
package pt.jkaiui.manager;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.logging.Logger;
import pt.jkaiui.JKaiUI;
import pt.jkaiui.tools.log.ConfigLog;
/**
*
* @author pedro
*/
public class Connection extends Thread {
private static Logger _logger;
private InetAddress ia;
private DatagramSocket csocket;
private String indir;
int port;
public Connection(String indir,int port){
_logger = ConfigLog.getLogger(this.getClass().getName());
this.indir = indir;
this.port = port;
try{
csocket = new DatagramSocket();
ia = InetAddress.getByName(indir);
start();
}
catch (Exception e){
System.out.println("Connection error.:"+e);
}
}
/*
public void send(String toSend) {
if (!toSend.isEmpty()) {
byte[] toSendtmp = StringValidator.StringtoByte(toSend);
try {
DatagramPacket dp = new DatagramPacket(toSendtmp, toSendtmp.length, ia, port);
//_logger.finest("Sending string: " + toSend+ "; Number of bytes: "+toSend.getBytes().length);
csocket.send(dp);
} catch (Exception e) {
System.out.println("Connection Send:"+e);
_logger.severe(" Error sending string: " + e.getMessage());
}
}
}
*/
public void send(byte[] toSend) {
if (toSend.length > 0) {
try {
// byte[] toSendtmp = toSend.getBytes(Encoding);
DatagramPacket dp = new DatagramPacket(toSend, toSend.length, ia, port);
//_logger.finest("Sending string: " + toSend+ "; Number of bytes: "+toSend.getBytes().length);
csocket.send(dp);
} catch (Exception e) {
System.out.println("Connection Send:" + e);
_logger.severe(" Error sending string: " + e.getMessage());
}
}
}
public void close(){
System.out.println("Closing Connection");
try{
csocket.close();
}catch (Exception e){
System.out.println("Connection close:"+e);
}
}
public void finalize(){
close();
}
public void run(){
_logger.config("Connecting to kaid");
while(true){
String str = "";
try {
byte [] receiveData = new byte [1500];
DatagramPacket receivePacket = new DatagramPacket(receiveData,receiveData.length);
csocket.receive(receivePacket);
// str = new String(receivePacket.getData());
// if (str!=""){
if(receiveData.length > 0){
// Pass string to Manager
JKaiUI.getManager().process(receivePacket.getData());
}
}
catch (Exception e) {
System.out.println("Connection run:"+e);
_logger.severe("Error in receiver thread: "+ e.getMessage() + ": "+ str.trim());
}
}
}
}