From 3f63324328fa89050d42d222cd2ffb203db553a5 Mon Sep 17 00:00:00 2001 From: Josh Larson Date: Wed, 1 Mar 2017 10:46:58 -0600 Subject: [PATCH] Added functionality to frontend text app and made connect wait for connection --- .../LightspeedFrontendText.java | 53 +++++++++++++++++-- 1 file changed, 48 insertions(+), 5 deletions(-) diff --git a/src/com/projectswg/lightspeed_frontend/LightspeedFrontendText.java b/src/com/projectswg/lightspeed_frontend/LightspeedFrontendText.java index 9c1921a..4c95056 100644 --- a/src/com/projectswg/lightspeed_frontend/LightspeedFrontendText.java +++ b/src/com/projectswg/lightspeed_frontend/LightspeedFrontendText.java @@ -42,14 +42,19 @@ import com.projectswg.common.network.packets.post.PostDeleteServerPacket; import com.projectswg.common.network.packets.post.PostDeployPacket; import com.projectswg.common.network.packets.post.PostStopBuildPacket; import com.projectswg.common.network.packets.post.PostStopDeployPacket; +import com.projectswg.common.network.packets.request.RequestBuildDetailedPacket; import com.projectswg.common.network.packets.request.RequestBuildListPacket; import com.projectswg.common.network.packets.request.RequestDeploymentDetailedPacket; import com.projectswg.common.network.packets.request.RequestDeploymentListPacket; +import com.projectswg.common.network.packets.request.RequestPacket; +import com.projectswg.common.network.packets.request.RequestServerDetailedPacket; import com.projectswg.common.network.packets.request.RequestServerListPacket; +import com.projectswg.common.network.packets.response.ResponseBuildDetailedPacket; import com.projectswg.common.network.packets.response.ResponseBuildListPacket; import com.projectswg.common.network.packets.response.ResponseDeploymentDetailedPacket; import com.projectswg.common.network.packets.response.ResponseDeploymentListPacket; import com.projectswg.common.network.packets.response.ResponseServerListPacket; +import com.projectswg.common.utilities.TimeUtilities; import com.projectswg.lightspeed_frontend.communication.FrontendCommunication; import com.projectswg.lightspeed_frontend.communication.FrontendLightspeedSession.LightspeedSessionCallback; import com.projectswg.lightspeed_frontend.data.SharedBuildData; @@ -140,6 +145,13 @@ public class LightspeedFrontendText implements LightspeedSessionCallback { return; } communication.connect(new InetSocketAddress(addr, port)); + try { + while (!communication.isConnected()) { + Thread.sleep(10); + } + } catch (InterruptedException e) { + Log.w(e); + } } private void processDisconnect() { @@ -152,34 +164,53 @@ public class LightspeedFrontendText implements LightspeedSessionCallback { return; } switch (args[1]) { - case "servers": - communication.send(new RequestServerListPacket()); + case "server_list": + sendAwaitResponse(new RequestServerListPacket()); + break; + case "server_detailed": + if (args.length < 3) { + Log.e("Invalid call to request server_detailed! Expected server id."); + break; + } + sendAwaitResponse(new RequestServerDetailedPacket(args[2])); break; case "build_list": if (args.length < 3) { Log.e("Invalid call to request build_list! Expected server id."); break; } - communication.send(new RequestBuildListPacket(args[2])); + sendAwaitResponse(new RequestBuildListPacket(args[2])); + break; + case "build_detailed": + if (args.length < 3) { + Log.e("Invalid call to request build_detailed! Expected build id."); + break; + } + sendAwaitResponse(new RequestBuildDetailedPacket(Long.parseLong(args[2]))); break; case "deployment_list": if (args.length < 3) { Log.e("Invalid call to request deployment_list! Expected server id."); break; } - communication.send(new RequestDeploymentListPacket(args[2])); + sendAwaitResponse(new RequestDeploymentListPacket(args[2])); break; case "deployment_detailed": if (args.length < 3) { Log.e("Invalid call to request deployment_detailed! Expected deployment id."); break; } - communication.send(new RequestDeploymentDetailedPacket(Long.parseLong(args[2]))); + sendAwaitResponse(new RequestDeploymentDetailedPacket(Long.parseLong(args[2]))); break; default: Log.e("Unknown request: " + args[1]); return; } + + } + + private void sendAwaitResponse(RequestPacket request) { + communication.send(request); synchronized (inbound) { try { inbound.wait(3000); @@ -275,6 +306,16 @@ public class LightspeedFrontendText implements LightspeedSessionCallback { for (SharedBuildData build : ((ResponseBuildListPacket) p).getBuildList()) { Log.i(" " + build); } + } else if (p instanceof ResponseBuildDetailedPacket) { + ResponseBuildDetailedPacket detailed = (ResponseBuildDetailedPacket) p; + Log.i("Build: %d", detailed.getBuildId()); + Log.i(" Server Id: %s", detailed.getServerId()); + Log.i(" Time: %s", TimeUtilities.getDateString(TimeUtilities.convertUtcToLocal(detailed.getTime()))); + Log.i(" Compile Time: %.2fms", detailed.getCompileTime()); + Log.i(" Build Success: %b", detailed.isBuildSuccess()); + Log.i(" Test Success: %b", detailed.isTestSuccess()); + Log.i(" Cancelled: %b", detailed.isCancelled()); + Log.i(" Test Results: %d/%d", detailed.getTestTotal()-detailed.getTestFailures(), detailed.getTestTotal()); } else if (p instanceof ResponseDeploymentListPacket) { Log.i("Deployments:"); for (SharedDeploymentData deployment : ((ResponseDeploymentListPacket) p).getDeploymentList()) { @@ -283,6 +324,8 @@ public class LightspeedFrontendText implements LightspeedSessionCallback { } else if (p instanceof ResponseDeploymentDetailedPacket) { ResponseDeploymentDetailedPacket detailed = (ResponseDeploymentDetailedPacket) p; Log.i("Deployment: %d", detailed.getDeploymentId()); + Log.i(" Build Id: %d", detailed.getBuildId()); + Log.i(" Server Id: %s", detailed.getServerId()); Log.i(" Start Time: %d", detailed.getStartTime()); Log.i(" End Time: %d", detailed.getEndTime()); Log.i(" Output: %n%s", detailed.getOutput());