On Wed, Oct 5, 2016 at 2:46 PM, Tim McManamey <[email protected]> wrote:
> I want to return a List of strings using gRPC. In my program it seams to
> add a string to the repeated value fine, but when I return the value to the
> calling program it's empty. Here is my code:
>
> my.proto
>
> syntax = "proto3";
>
> option java_multiple_files = true;
> option java_package = my.package.name.testsend";
> option java_outer_classname = "TestSendProto";
> option objc_class_prefix = "TS";
>
> package testsend;
>
> // The greeting service definition.
> service Greeter {
> // Sends a greeting
> rpc SayHello (HelloRequest) returns (HelloReply) {}
> rpc SayHelloAgain (HelloRequest) returns (ArrayHelloReply) {}
> }
>
> // The request message containing the user's name.
> message HelloRequest {
> string name = 1;
> }
>
> // The response message containing the greetings
> message HelloReply {
> string message = 1;
> }
>
> message ArrayHelloReply {
> repeated string message2 = 2;
> }
>
> ////////////////////////////// server /////////////////////////////////
> import io.grpc.Server;
> import io.grpc.ServerBuilder;
> import io.grpc.stub.StreamObserver;
> import java.io.IOException;
> import java.util.logging.Logger;
> import java.util.ArrayList;
> import java.io.*;
>
>
> /**
> *
> * @author yotimbo
> */
> public class yoRecvo {
> private static final Logger logger = Logger.getLogger(yoRecvo.
> class.getName());
>
> /* The port on which the server should run */
> private int port = 50051;
> private Server server;
>
> private void start() throws IOException {
> server = ServerBuilder.forPort(port)
> .addService(new GreeterImpl())
> .build()
> .start();
> logger.info("Server started, listening on " + port);
> Runtime.getRuntime().addShutdownHook(new Thread() {
> @Override
> public void run() {
> // Use stderr here since the logger may have been reset by its JVM
> shutdown hook.
> System.err.println("*** shutting down gRPC server since JVM is
> shutting down");
> yoRecvo.this.stop();
> System.err.println("*** server shut down");
> }
> });
> }
>
> private void stop() {
> if (server != null) {
> server.shutdown();
> }
> }
>
> /**
> * Await termination on the main thread since the grpc library uses
> daemon threads.
> */
> private void blockUntilShutdown() throws InterruptedException {
> if (server != null) {
> server.awaitTermination();
> }
> }
>
> /**
> * Main launches the server from the command line.
> */
> public static void main(String[] args) throws IOException,
> InterruptedException {
> final yoRecvo server = new yoRecvo();
> server.start();
> server.blockUntilShutdown();
> }
>
> private class GreeterImpl extends GreeterGrpc.GreeterImplBase {
>
> @Override
> public void sayHello(HelloRequest req, StreamObserver<HelloReply>
> responseObserver) {
> HelloReply reply = HelloReply.newBuilder().setMessage("Hello " +
> req.getName()).build();
> responseObserver.onNext(reply);
> responseObserver.onCompleted();
> }
> @Override
> public void sayHelloAgain(HelloRequest req,
> StreamObserver<ArrayHelloReply>
> responseObserver) {
> String str = new String("Yo Dude");
> final Logger logger = Logger.getLogger(yoRecvo.class.getName());
>
> ArrayHelloReply arrayHelloReply = ArrayHelloReply.newBuilder().
> build();
>
Did you mean to make the reply empty, would have expected to see calls to
add elements to the message2 list here
>
> logger.info("number of elements " + arrayHelloReply.
> getMessage2Count());
>
>
> responseObserver.onNext(arrayHelloReply);
> responseObserver.onCompleted();
> }
> }
> }
>
> /////////////////////// client //////////////////////////
>
> import com.google.protobuf.Descriptors;
> import io.grpc.ManagedChannel;
> import io.grpc.ManagedChannelBuilder;
> import io.grpc.StatusRuntimeException;
> import java.util.List;
>
> import java.util.concurrent.TimeUnit;
> import java.util.logging.Level;
> import java.util.logging.Logger;
>
>
> /**
> *
> * @author yotimbo
> */
> public class yoSendo {
> private static final Logger logger = Logger.getLogger(yoSendo.
> class.getName());
> private final ManagedChannel channel; //gRPC class, only needed for
> server
> private final GreeterGrpc.GreeterBlockingStub blockingStub;
>
> public yoSendo(String host, int port) {
> channel = ManagedChannelBuilder.forAddress(host, port)
> .usePlaintext(true)
> .build();
> blockingStub = GreeterGrpc.newBlockingStub(channel); //Greeter
> is from proto service, Grpc must be appended
> }
>
> public void shutdown() throws InterruptedException {
> channel.shutdown().awaitTermination(5, TimeUnit.SECONDS);
> }
>
> /** Say hello to server. */
> public void greet(String name) {
> List mylist;
> logger.info("Will try to greet " + name + " ...");
> HelloRequest request = HelloRequest.newBuilder().
> setName(name).build();
> HelloReply response;
> ArrayHelloReply arrayResponse;
> try {
> response = blockingStub.sayHello(request);
> } catch (StatusRuntimeException e) {
> logger.log(Level.WARNING, "RPC failed: {0}", e.getStatus());
> return;
> }
> logger.info("Greeting: " + response.getMessage());
> try {
> arrayResponse = blockingStub.sayHelloAgain(request);
> logger.info(arrayResponse.getAllFields().toString());
> } catch (StatusRuntimeException e) {
> logger.log(Level.WARNING, "RPC failed: {0}", e.getStatus());
> return;
> }
> logger.info("Greeting: " + arrayResponse.getMessage2Count());
>
> }
>
> public static void main(String[] args) throws Exception{
> yoSendo client = new yoSendo("localhost", 50051);
> try {
> /* Access a service running on the local machine on port 50051 */
> String user = "world";
> if (args.length > 0) {
> user = args[0]; /* Use the arg as the name to greet if provided */
> }
> client.greet(user);
> } finally {
> client.shutdown();
> }
> }
> }
>
> --
> You received this message because you are subscribed to the Google Groups "
> grpc.io" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at https://groups.google.com/group/grpc-io.
> To view this discussion on the web visit https://groups.google.com/d/
> msgid/grpc-io/2b745870-9ab4-4de5-8bdc-e1a3322cb238%40googlegroups.com
> <https://groups.google.com/d/msgid/grpc-io/2b745870-9ab4-4de5-8bdc-e1a3322cb238%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>
--
You received this message because you are subscribed to the Google Groups
"grpc.io" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/grpc-io.
To view this discussion on the web visit
https://groups.google.com/d/msgid/grpc-io/CADQ0XY1t0k2bSAMj67Q_A1Rq3ySmy8ts%2B%2BCN9dtLPodHSPof5g%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.