jobserv/src/main/java/JobServ/JobServServer.java

94 lines
3.1 KiB
Java
Raw Normal View History

2019-05-16 14:49:47 -07:00
package JobServ;
import io.grpc.Server;
import io.grpc.ServerBuilder;
import io.grpc.stub.StreamObserver;
import java.io.IOException;
import java.util.logging.Logger;
public class JobServServer {
private static final Logger logger = Logger.getLogger(JobServServer.class.getName());
private Server server;
// starts the GRPC API Server
private void start() throws IOException {
2019-05-17 01:28:26 -07:00
// TODO: this should be passed in from a configuration manager
int port = 8448;
server = ServerBUilder.forPort(port)
.addService(new JobServImpl())
.build()
.start();
logger.info("Server initialized without tls");
Runtime.getRuntime().addShutdownHook(new thread() {
@Override
public void run() {
// JVM shutdown might break logger functionality
// so investigate this....
logger.info("Shutting down server");
JobServServer.this.stop();
}
});
2019-05-16 14:49:47 -07:00
}
private void stop() {
2019-05-17 01:28:26 -07:00
if (server != null) {
server.shutdown();
}
2019-05-16 14:49:47 -07:00
}
2019-05-17 01:28:26 -07:00
2019-05-16 14:49:47 -07:00
// spinlock for main()
private void blockUntilShutdown() throws InterruptedException {
2019-05-17 01:28:26 -07:00
if (server != null) {
server.awaitTermination();
}
2019-05-16 14:49:47 -07:00
}
2019-05-17 01:28:26 -07:00
// Main function. starts GRPC server and spins until server is shutdown
2019-05-16 14:49:47 -07:00
public static void main(String[] args) throws IOException, InterruptedException {
2019-05-17 01:28:26 -07:00
final JobServServer server = new JobServServer();
server.start();
server.blockUntilShutdown();
2019-05-16 14:49:47 -07:00
}
// wrap around stub code generated by GRPC
2019-05-17 01:28:26 -07:00
static class JobServImpl extends JobServ.JobServImplBase {
2019-05-16 14:49:47 -07:00
2019-05-17 01:28:26 -07:00
@Override
public void getStatusDetail(RequestMessage request,
StreamObserver<JobStatusMessage> responder) {
// TODO: Implement job controller, check request type, do the thing
JobStatusMessage reply = JobStatusMessage.newBuilder()
.setPID(-1)
.setProcessStatus(-1)
.build();
responder.onNext(reply);
responder.onCompleted();
}
@Override
public void getJobOutput(RequestMessage request,
StreamObserver<OutputMessage> responder) {
// TODO: Implement job controller, get output, do the thing
OutputMessage reply = OutputMessage.newBuilder()
.setPID(-1)
.build();
responder.onNext(reply);
responder.onCompleted();
}
@Override
public void makeNewJob(NewJobMessage request,
StreamObserver<JobStatusMessage> responder) {
// TODO: Implement job controller, Start Job, do the thing
JobStatusMessage reply = JobStatusMessage.newBuilder()
.setPID(-1)
.setJobStatus(-1)
.build();
responder.onNext(reply);
responder.onCompleted();
}
2019-05-16 14:49:47 -07:00
}
}