diff --git a/src/main/java/JobServ/ShellServerService.java b/src/main/java/JobServ/ShellServerService.java index f6cb394..7275b12 100644 --- a/src/main/java/JobServ/ShellServerService.java +++ b/src/main/java/JobServ/ShellServerService.java @@ -1,13 +1,13 @@ /* * ShellServerService - * + * * v1.0 - * + * * May 18, 2019 */ package JobServ; -import io.grpc.stub.StreamObserver; +import io.grpc.stub.StreamObserver; /* * The ShellServerService wraps around the protobuf API @@ -15,59 +15,98 @@ import io.grpc.stub.StreamObserver; */ class ShellServerService extends ShellServerGrpc.ShellServerImplBase { + private ProcessManager manager; + + /* + * constructor + * initialized ProcessManager + */ + public ShellServerService() { + manager = new ProcessManager(); + } + + /* + * getStatus + * implements api endpoint as defined in jobserv.proto + */ @Override public void getStatus(PIDMessage request, StreamObserver responder) { - // TODO: Implement job controller, check request type, do the thing + + int status = manager.getProcessStatus(request.getPid()); + StatusMessage reply = StatusMessage.newBuilder() - .setIsRunning(true) + .setProcessStatus(status) .build(); responder.onNext(reply); responder.onCompleted(); } + /* + * getOutput + * implements api endpoint as defined in jobserv.proto + */ @Override public void getOutput(PIDMessage request, StreamObserver responder) { - // TODO: Implement job controller, get output, do the thing + + String output = manager.getProcessOutput(request.getPid()); + OutputMessage reply = OutputMessage.newBuilder() - .setOutput("test data") + .setOutput(output) .build(); responder.onNext(reply); responder.onCompleted(); } + /* + * newJob + * implements api endpoint as defined in jobserv.proto + */ @Override public void newJob(NewJobMessage request, StreamObserver responder) { - // TODO: Implement job controller, Start Job, do the thing + + int newPid = manager.newProcess(request.getCommand()); + PIDMessage reply = PIDMessage.newBuilder() - .setPid(-1) + .setPid(newPid) .build(); responder.onNext(reply); responder.onCompleted(); } + /* + * getReturn + * implements api endpoint as defined in jobserv.proto + */ @Override public void getReturn(PIDMessage request, StreamObserver responder) { - // TODO: Implement job controller, get return code + + int retVal = manager.getProcessReturn(request.getPid()); + ReturnMessage reply = ReturnMessage.newBuilder() - .setProcessReturnCode(277) + .setProcessReturnCode(retVal) .build(); responder.onNext(reply); responder.onCompleted(); } + /* + * killJob + * implements api endpoint as defined in jobserv.proto + */ @Override public void killJob(PIDMessage request, StreamObserver responder) { - // TODO: implement job controller, do the thing - // TODO: kill job here + + int status = manager.getProcessStatus(request.getPid()); + StatusMessage reply = StatusMessage.newBuilder() - .setIsRunning(false) + .setProcessStatus(status) .build(); responder.onNext(reply); responder.onCompleted(); } -} \ No newline at end of file +} diff --git a/src/main/proto/jobserv.proto b/src/main/proto/jobserv.proto index e223cd0..351710d 100644 --- a/src/main/proto/jobserv.proto +++ b/src/main/proto/jobserv.proto @@ -16,7 +16,7 @@ service ShellServer { } message StatusMessage { - bool IsRunning = 1; + int32 ProcessStatus = 1; } message ReturnMessage {