package com.google.tagpost;

import io.grpc.Server;
import io.grpc.ServerBuilder;

import java.io.IOException;
import java.util.concurrent.TimeUnit;
import java.util.logging.Logger;

/**
 * A dummy server that only manages startup/shutdown.
 */
public class TagpostServer {
    private static final Logger logger = Logger.getLogger(TagpostServer.class.getName());

    private Server server;

    private void start() throws IOException {
        /* The port on which the server should run */
        int port = 50053;
        server = ServerBuilder
                .forPort(port)
                .addService(new TagpostService())
                .build()
                .start();
        logger.info("Server started, listening on " + port);
        Runtime.getRuntime().addShutdownHook(new Thread() {
            @Override
            public void run() {
                // Use stderr here since the logger may have been reset by its JVM shutdown hook.
                System.err.println("*** shutting down gRPC server since JVM is shutting down");
                try {
                    TagpostServer.this.stop();
                } catch (InterruptedException e) {
                    e.printStackTrace(System.err);
                }
                System.err.println("*** server shut down");
            }
        });
    }

    private void stop() throws InterruptedException {
        if (server != null) {
            server.shutdown().awaitTermination(30, TimeUnit.SECONDS);
        }
    }

    /**
     * Await termination on the main thread since the grpc library uses daemon threads.
     */
    private void blockUntilShutdown() throws InterruptedException {
        if (server != null) {
            server.awaitTermination();
        }
    }

    /**
     * Main launches the server from the command line.
     */
    public static void main(String[] args) throws IOException, InterruptedException {
        final TagpostServer server = new TagpostServer();
        server.start();
        server.blockUntilShutdown();
    }

    // static class TagpostServiceImpl extends TagpostServiceGrpc.TagpostServiceImplBase {

    //   @Override
    //   public void simpleReply(SimpleReplyRequest req, StreamObserver<SimpleReplyResponse> responseObserver) {
    //     SimpleReplyResponse response = SimpleReplyResponse.newBuilder().setMessage("Hello " + req.getRequestId()).build();
    //     responseObserver.onNext(response);
    //     responseObserver.onCompleted();
    //   }
    // }
}

@@ -2040,467 +2040,7 @@
    %7D
-%0A%0A    // static class TagpostServiceImpl extends TagpostServiceGrpc.TagpostServiceImplBase %7B%0A%0A    //   @Override%0A    //   public void simpleReply(SimpleReplyRequest req, StreamObserver%3CSimpleReplyResponse%3E responseObserver) %7B%0A    //     SimpleReplyResponse response = SimpleReplyResponse.newBuilder().setMessage(%22Hello %22 + req.getRequestId()).build();%0A    //     responseObserver.onNext(response);%0A    //     responseObserver.onCompleted();%0A    //   %7D%0A    // %7D
 %0A%7D%0A

delete unwanted comments