From f45a96c1e071e2d1efeacc1ff61b16910272bd7e Mon Sep 17 00:00:00 2001 From: Aidan Hahn Date: Sat, 18 May 2019 16:40:58 -0700 Subject: [PATCH] refactored out private module of JobServServer into its own module. got ssl code building --- build.gradle | 2 +- src/main/java/JobServ/JobServServer.java | 69 ++---------------- src/main/java/JobServ/ShellServerService.java | 73 +++++++++++++++++++ 3 files changed, 79 insertions(+), 65 deletions(-) create mode 100644 src/main/java/JobServ/ShellServerService.java diff --git a/build.gradle b/build.gradle index 57acf4a..e3d3779 100644 --- a/build.gradle +++ b/build.gradle @@ -41,7 +41,7 @@ dependencies { compile 'org.glassfish:javax.annotation:10.0-b28' // grpc stuff - compile "io.grpc:grpc-netty-shaded:${grpcVersion}" + compile "io.grpc:grpc-netty:${grpcVersion}" compile "io.grpc:grpc-protobuf:${grpcVersion}" compile "io.grpc:grpc-stub:${grpcVersion}" compile 'io.netty:netty-tcnative-boringssl-static:2.0.22.Final' diff --git a/src/main/java/JobServ/JobServServer.java b/src/main/java/JobServ/JobServServer.java index 2230bf4..a3b6021 100644 --- a/src/main/java/JobServ/JobServServer.java +++ b/src/main/java/JobServ/JobServServer.java @@ -10,13 +10,13 @@ package JobServ; import io.grpc.Server; import io.grpc.ServerBuilder; -import io.grpc.stub.StreamObserver; import io.grpc.netty.GrpcSslContexts; import io.grpc.netty.NettyServerBuilder; import io.netty.handler.ssl.ClientAuth; import io.netty.handler.ssl.SslContextBuilder; import io.netty.handler.ssl.SslProvider; +import java.io.File; import java.io.IOException; import java.util.logging.Logger; @@ -53,12 +53,13 @@ public class JobServServer { sslClientContextBuilder.clientAuth(ClientAuth.REQUIRE); return GrpcSslContexts.configure(sslClientContextBuilder); + } // starts the GRPC API Server private void start() throws IOException { // TODO: this should be passed in from a configuration manager - server = ServerBuilder.forPort(this.port) - .addService(new ShellServerImpl()) + server = NettyServerBuilder.forPort(port) + .addService(new ShellServerService()) .sslContext(getSslContextBuilder().build()) .build() .start(); @@ -90,7 +91,7 @@ public class JobServServer { // Main function. starts GRPC server and spins until server is shutdown public static void main(String[] args) throws IOException, InterruptedException { - int port = 8448; // TODO: port and key/cert files should be handled by a config manager + int port = 8448; // TODO: port and key/cert files should be handled by a config manager if(args.length < 3) { System.out.println("Usage: ./jobserv-server certchain privatekey truststore"); @@ -101,64 +102,4 @@ public class JobServServer { server.start(); server.blockUntilShutdown(); } - - // wrap around stub code generated by GRPC - static class ShellServerImpl extends ShellServerGrpc.ShellServerImplBase { - - @Override - public void getStatus(PIDMessage request, - StreamObserver responder) { - // TODO: Implement job controller, check request type, do the thing - StatusMessage reply = StatusMessage.newBuilder() - .setIsRunning(true) - .build(); - responder.onNext(reply); - responder.onCompleted(); - } - - @Override - public void getOutput(PIDMessage request, - StreamObserver responder) { - // TODO: Implement job controller, get output, do the thing - OutputMessage reply = OutputMessage.newBuilder() - .setOutput("test data") - .build(); - responder.onNext(reply); - responder.onCompleted(); - } - - @Override - public void newJob(NewJobMessage request, - StreamObserver responder) { - // TODO: Implement job controller, Start Job, do the thing - PIDMessage reply = PIDMessage.newBuilder() - .setPid(-1) - .build(); - responder.onNext(reply); - responder.onCompleted(); - } - - @Override - public void getReturn(PIDMessage request, - StreamObserver responder) { - // TODO: Implement job controller, get return code - ReturnMessage reply = ReturnMessage.newBuilder() - .setProcessReturnCode(277) - .build(); - responder.onNext(reply); - responder.onCompleted(); - } - - @Override - public void killJob(PIDMessage request, - StreamObserver responder) { - // TODO: implement job controller, do the thing - // TODO: kill job here - StatusMessage reply = StatusMessage.newBuilder() - .setIsRunning(false) - .build(); - responder.onNext(reply); - responder.onCompleted(); - } - } } diff --git a/src/main/java/JobServ/ShellServerService.java b/src/main/java/JobServ/ShellServerService.java new file mode 100644 index 0000000..f6cb394 --- /dev/null +++ b/src/main/java/JobServ/ShellServerService.java @@ -0,0 +1,73 @@ +/* + * ShellServerService + * + * v1.0 + * + * May 18, 2019 + */ + +package JobServ; +import io.grpc.stub.StreamObserver; + +/* + * The ShellServerService wraps around the protobuf API + * Implements API endpoints + */ +class ShellServerService extends ShellServerGrpc.ShellServerImplBase { + + @Override + public void getStatus(PIDMessage request, + StreamObserver responder) { + // TODO: Implement job controller, check request type, do the thing + StatusMessage reply = StatusMessage.newBuilder() + .setIsRunning(true) + .build(); + responder.onNext(reply); + responder.onCompleted(); + } + + @Override + public void getOutput(PIDMessage request, + StreamObserver responder) { + // TODO: Implement job controller, get output, do the thing + OutputMessage reply = OutputMessage.newBuilder() + .setOutput("test data") + .build(); + responder.onNext(reply); + responder.onCompleted(); + } + + @Override + public void newJob(NewJobMessage request, + StreamObserver responder) { + // TODO: Implement job controller, Start Job, do the thing + PIDMessage reply = PIDMessage.newBuilder() + .setPid(-1) + .build(); + responder.onNext(reply); + responder.onCompleted(); + } + + @Override + public void getReturn(PIDMessage request, + StreamObserver responder) { + // TODO: Implement job controller, get return code + ReturnMessage reply = ReturnMessage.newBuilder() + .setProcessReturnCode(277) + .build(); + responder.onNext(reply); + responder.onCompleted(); + } + + @Override + public void killJob(PIDMessage request, + StreamObserver responder) { + // TODO: implement job controller, do the thing + // TODO: kill job here + StatusMessage reply = StatusMessage.newBuilder() + .setIsRunning(false) + .build(); + responder.onNext(reply); + responder.onCompleted(); + } +} \ No newline at end of file