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
}
});
}