code: @Override
    public void onNext(final RemoteMessage<EvaluatorShimProtocol.EvaluatorShimControlProto> remoteMessage) {
      final EvaluatorShimProtocol.EvaluatorShimCommand command = remoteMessage.getMessage().getCommand();
      switch (command) {
      case LAUNCH_EVALUATOR:
        LOG.log(Level.INFO, "Received a command to launch the Evaluator.");
        this.threadPool.submit(new Runnable() {
          @Override
          public void run() {
            EvaluatorShim.this.onEvaluatorLaunch(remoteMessage.getMessage().getEvaluatorLaunchCommand(),
                remoteMessage.getMessage().getEvaluatorConfigString(),
                remoteMessage.getMessage().getEvaluatorFileResourcesUrl());
          }
        });
        break;
  
      case TERMINATE:
        LOG.log(Level.INFO, "Received a command to terminate the EvaluatorShim.");
        this.threadPool.submit(new Runnable() {
          @Override
          public void run() {
            EvaluatorShim.this.onStop();
          }
        });
        break;
  
      default:
        LOG.log(Level.WARNING, "An unknown command was received by the EvaluatorShim: {0}.", command);
        throw new IllegalArgumentException("An unknown command was received by the EvaluatorShim.");
      }
    }
docs: This method is invoked by the Remote Manager when a command message from the Driver is received.
  
  @param remoteMessage the message sent to the evaluator shim by the Driver.