Java tutorial
// Copyright 2016 Google Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // //////////////////////////////////////////////////////////////////////////////// package com.google.pubsub.clients.adapter; import com.beust.jcommander.Parameter; import com.beust.jcommander.Parameters; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; import com.google.pubsub.clients.common.MetricsHandler; import com.google.pubsub.clients.common.Task; import com.google.pubsub.clients.common.Task.RunResult; import com.google.pubsub.flic.common.LoadtestProto; import com.google.pubsub.flic.common.LoadtestWorkerGrpc; import io.grpc.ManagedChannelBuilder; /** * A Task that proxies commands to a LoadtestWorker process on localhost. */ public class AdapterTask extends Task { private final LoadtestWorkerGrpc.LoadtestWorkerFutureStub stub; public AdapterTask(LoadtestProto.StartRequest request, MetricsHandler.MetricName metricName, Options options) { super(request, "adapter", metricName); stub = LoadtestWorkerGrpc.newFutureStub( ManagedChannelBuilder.forAddress("localhost", options.workerPort).usePlaintext(true).build()); try { stub.start(request).get(); } catch (Throwable t) { throw new RuntimeException("Unable to start server.", t); } } @Override public ListenableFuture<RunResult> doRun() { return Futures.transform(stub.execute(LoadtestProto.ExecuteRequest.getDefaultInstance()), response -> RunResult.fromMessages(response.getReceivedMessagesList(), response.getLatenciesList())); } /** * Contains the command line options for {@link AdapterTask}. */ @Parameters(separators = "=") public static class Options { @Parameter(names = { "--worker_port" }, description = "The port that the LoadtestWorker process server is listening on.") int workerPort = 6000; } }