Add more netcode
This commit is contained in:
@@ -1,11 +1,12 @@
|
||||
package com.flaremicro.crossjeeves.net;
|
||||
|
||||
import static com.flaremicro.crossjeeves.net.ErrorCodes.FILE_DOWNLOAD_FAILURE;
|
||||
import static com.flaremicro.crossjeeves.net.ErrorCodes.*;
|
||||
|
||||
import java.io.BufferedInputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.net.InetAddress;
|
||||
import java.net.Socket;
|
||||
|
||||
import com.flaremicro.crossjeeves.net.packet.Packet;
|
||||
@@ -21,33 +22,47 @@ import com.flaremicro.util.Util;
|
||||
import com.flaremicro.util.ZipUtils;
|
||||
|
||||
public class ClientHandler extends NetworkHandler {
|
||||
|
||||
public ClientHandler(Socket socket) throws IOException {
|
||||
private String script;
|
||||
|
||||
public ClientHandler(Socket socket, String script) throws IOException {
|
||||
super(socket);
|
||||
this.script = script;
|
||||
}
|
||||
|
||||
|
||||
private void init() {
|
||||
enqueue(new Packet0Identify(0));
|
||||
this.beginWriteThread();
|
||||
this.beginReading();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handlePacket(Packet packet) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
disconnect(INVALID_PACKET_RECIEVED.id, "Recieved invalid packet " + packet.getId() + " (Unknown)");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handlePacket(Packet0Identify packet) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
if (packet.getProtocolVersion() != Packet.PROTOCOL_VERSION)
|
||||
{
|
||||
disconnect(OUTDATED_AGENT.id, "Recieved outdated protocol version " + packet.getProtocolVersion() + " (Expected " + Packet.PROTOCOL_VERSION + ")");
|
||||
}
|
||||
else
|
||||
{
|
||||
enqueue(new Packet2Script(script));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handlePacket(Packet1Status packet) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
if((packet.getFlags() & Packet1Status.BUSY) != 0)
|
||||
{
|
||||
disconnect(OUTDATED_AGENT.id, "Agent is too busy");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handlePacket(Packet2Script packet) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
disconnect(INVALID_PACKET_RECIEVED.id, "Recieved invalid packet " + packet.getId() + " (Script) (Server should not send a script)");
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -56,7 +71,7 @@ public class ClientHandler extends NetworkHandler {
|
||||
String workspace = System.getenv("WORKSPACE");
|
||||
if (workspace == null || workspace.trim().length() <= 0)
|
||||
{
|
||||
//disconnect
|
||||
disconnect(INVALID_SYSTEM_STATE.id, "Workspace is not defined");
|
||||
}
|
||||
BufferedInputStream fileStream = null;
|
||||
try
|
||||
@@ -79,7 +94,7 @@ public class ClientHandler extends NetworkHandler {
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
//disconnect
|
||||
disconnect(FILE_UPLOAD_FAILURE.id, "Failed to upload file");
|
||||
e.printStackTrace();
|
||||
}
|
||||
finally
|
||||
@@ -97,26 +112,39 @@ public class ClientHandler extends NetworkHandler {
|
||||
catch (IOException e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
disconnect(FILE_DOWNLOAD_FAILURE, "Failed to download transferred file");
|
||||
disconnect(FILE_DOWNLOAD_FAILURE.id, "Failed to download transferred file");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handlePacket(Packet5Artifact packet) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handlePacket(Packet127KeepAlive packet) {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
enqueue(packet);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handlePacket(Packet6Disconnect packet) {
|
||||
// TODO Auto-generated method stub
|
||||
System.out.printf("Disconnect %d: %s%n", packet.getCode(), packet.getReason());
|
||||
doDisconnect(packet.getCode());
|
||||
}
|
||||
|
||||
public static int connect(InetAddress addr, int port, String script) {
|
||||
try
|
||||
{
|
||||
Socket socket = new Socket(addr, port);
|
||||
ClientHandler clientHandler = new ClientHandler(socket, script);
|
||||
clientHandler.init();
|
||||
return clientHandler.getExitCode();
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
return CONNECT_FAILED.id;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user