diff options
Diffstat (limited to 'src/main/java/com/orbekk/example/ExampleClient.java')
-rw-r--r-- | src/main/java/com/orbekk/example/ExampleClient.java | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/src/main/java/com/orbekk/example/ExampleClient.java b/src/main/java/com/orbekk/example/ExampleClient.java new file mode 100644 index 0000000..63d8b17 --- /dev/null +++ b/src/main/java/com/orbekk/example/ExampleClient.java @@ -0,0 +1,53 @@ +package com.orbekk.example; + +import java.util.concurrent.CountDownLatch; + +import com.google.protobuf.RpcCallback; +import com.orbekk.example.Example.FortuneReply; +import com.orbekk.protobuf.Rpc; +import com.orbekk.protobuf.RpcChannel; + +public class ExampleClient { + public void runClient(int port) { + RpcChannel channel = null; + try { + channel = RpcChannel.create("localhost", port); + Example.FortuneService service = + Example.FortuneService.newStub(channel); + printFortune(service); + } finally { + if (channel != null) { + channel.close(); + } + } + + } + + public void printFortune(Example.FortuneService service) { + Rpc rpc = new Rpc(); // Represents a single rpc call. + Example.Empty request = Example.Empty.newBuilder().build(); + + // An RPC call is asynchronous. A CountDownLatch is a nice way to wait + // for the callback to finish. + final CountDownLatch doneSignal = new CountDownLatch(1); + service.getFortune(rpc, request, new RpcCallback<Example.FortuneReply>() { + @Override public void run(FortuneReply reply) { + System.out.println(reply.getFortune()); + doneSignal.countDown(); + } + }); + + try { + doneSignal.await(); + } catch (InterruptedException e) { + System.out.println("Interrupted while waiting for fortune. :("); + } + } + public static void main(String[] args) { + if (args.length == 0) { + System.err.println("Usage: ExampleClient <port>"); + System.exit(1); + } + new ExampleClient().runClient(Integer.valueOf(args[0])); + } +} |