public Source runClient()

in benchmark-java/src/main/java/org/apache/pekko/grpc/benchmarks/driver/LoadWorker.java [191:217]


    public Source<Control.ClientStatus, NotUsed> runClient(Source<ClientArgs, NotUsed> in) {
      return in.map(value -> {
        try {
          ClientArgs.ArgtypeCase argTypeCase = value.getArgtypeCase();
          if (argTypeCase == ClientArgs.ArgtypeCase.SETUP && workerClient == null) {
            workerClient = new LoadClient(value.getSetup());
            workerClient.start();
            return Control.ClientStatus.newBuilder().build();
          } else if (argTypeCase == ClientArgs.ArgtypeCase.MARK && workerClient != null) {
            return Control.ClientStatus.newBuilder()
                .setStats(workerClient.getStats())
                .build();
          } else {
            throw Status.ALREADY_EXISTS
                .withDescription("Client already started")
                .asRuntimeException();
          }
        } catch (Throwable t) {
          log.log(Level.WARNING, "Error running client", t);
          if (!(t instanceof StatusRuntimeException) && !(t instanceof StatusException))
            throw Status.INTERNAL.withCause(t).asException();
          else
            throw t;
          // FIXME Shutdown the client if we can
        }
      });
    }