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

@ -15,57 +15,96 @@ 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 {