plugged ProcessManager into ShellServerService

This commit is contained in:
Aidan Hahn 2019-05-23 14:30:37 -07:00
parent eb15da6ae2
commit d814ff74b0
No known key found for this signature in database
GPG key ID: 327711E983899316
2 changed files with 55 additions and 16 deletions

View file

@ -1,13 +1,13 @@
/* /*
* ShellServerService * ShellServerService
* *
* v1.0 * v1.0
* *
* May 18, 2019 * May 18, 2019
*/ */
package JobServ; package JobServ;
import io.grpc.stub.StreamObserver; import io.grpc.stub.StreamObserver;
/* /*
* The ShellServerService wraps around the protobuf API * The ShellServerService wraps around the protobuf API
@ -15,59 +15,98 @@ import io.grpc.stub.StreamObserver;
*/ */
class ShellServerService extends ShellServerGrpc.ShellServerImplBase { 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 @Override
public void getStatus(PIDMessage request, public void getStatus(PIDMessage request,
StreamObserver<StatusMessage> responder) { StreamObserver<StatusMessage> responder) {
// TODO: Implement job controller, check request type, do the thing
int status = manager.getProcessStatus(request.getPid());
StatusMessage reply = StatusMessage.newBuilder() StatusMessage reply = StatusMessage.newBuilder()
.setIsRunning(true) .setProcessStatus(status)
.build(); .build();
responder.onNext(reply); responder.onNext(reply);
responder.onCompleted(); responder.onCompleted();
} }
/*
* getOutput
* implements api endpoint as defined in jobserv.proto
*/
@Override @Override
public void getOutput(PIDMessage request, public void getOutput(PIDMessage request,
StreamObserver<OutputMessage> responder) { StreamObserver<OutputMessage> responder) {
// TODO: Implement job controller, get output, do the thing
String output = manager.getProcessOutput(request.getPid());
OutputMessage reply = OutputMessage.newBuilder() OutputMessage reply = OutputMessage.newBuilder()
.setOutput("test data") .setOutput(output)
.build(); .build();
responder.onNext(reply); responder.onNext(reply);
responder.onCompleted(); responder.onCompleted();
} }
/*
* newJob
* implements api endpoint as defined in jobserv.proto
*/
@Override @Override
public void newJob(NewJobMessage request, public void newJob(NewJobMessage request,
StreamObserver<PIDMessage> responder) { StreamObserver<PIDMessage> responder) {
// TODO: Implement job controller, Start Job, do the thing
int newPid = manager.newProcess(request.getCommand());
PIDMessage reply = PIDMessage.newBuilder() PIDMessage reply = PIDMessage.newBuilder()
.setPid(-1) .setPid(newPid)
.build(); .build();
responder.onNext(reply); responder.onNext(reply);
responder.onCompleted(); responder.onCompleted();
} }
/*
* getReturn
* implements api endpoint as defined in jobserv.proto
*/
@Override @Override
public void getReturn(PIDMessage request, public void getReturn(PIDMessage request,
StreamObserver<ReturnMessage> responder) { StreamObserver<ReturnMessage> responder) {
// TODO: Implement job controller, get return code
int retVal = manager.getProcessReturn(request.getPid());
ReturnMessage reply = ReturnMessage.newBuilder() ReturnMessage reply = ReturnMessage.newBuilder()
.setProcessReturnCode(277) .setProcessReturnCode(retVal)
.build(); .build();
responder.onNext(reply); responder.onNext(reply);
responder.onCompleted(); responder.onCompleted();
} }
/*
* killJob
* implements api endpoint as defined in jobserv.proto
*/
@Override @Override
public void killJob(PIDMessage request, public void killJob(PIDMessage request,
StreamObserver<StatusMessage> responder) { StreamObserver<StatusMessage> responder) {
// TODO: implement job controller, do the thing
// TODO: kill job here int status = manager.getProcessStatus(request.getPid());
StatusMessage reply = StatusMessage.newBuilder() StatusMessage reply = StatusMessage.newBuilder()
.setIsRunning(false) .setProcessStatus(status)
.build(); .build();
responder.onNext(reply); responder.onNext(reply);
responder.onCompleted(); responder.onCompleted();
} }
} }

View file

@ -16,7 +16,7 @@ service ShellServer {
} }
message StatusMessage { message StatusMessage {
bool IsRunning = 1; int32 ProcessStatus = 1;
} }
message ReturnMessage { message ReturnMessage {