package scouter.server.netio.req.net;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import scouter.util.DataUtil;
public class TcpAgentReqWorker extends Thread {
private Socket socket;
private InputStream in;
private OutputStream out;
public TcpAgentReqWorker(int objHash, Socket socket){
this.socket = socket;
this.setName("SCOUTER-TCP-REQ-" + socket.getRemoteSocketAddress().toString());
this.setDaemon(true);
}
@Override
public void run() {
int cmd;
try {
socket.setSoTimeout(0);
in = socket.getInputStream();
out = socket.getOutputStream();
ReqCommand command;
while (true) {
cmd = DataUtil.readInt(in);
command = ReqCommandFactory.makeReqCommand(cmd);
if(command == null){
break;
}
command.process(in, out);
}
}catch(Throwable ex){
ex.printStackTrace();
}finally{
if(in != null){ try { in.close();}catch(Exception ex){} }
if(out != null){ try { out.close();}catch(Exception ex){}}
if(socket != null){ try { socket.close();}catch(Exception ex){} }
}
}
}