Tim,

Any chance you can put your code into a PR on Github or a Gist to make it
easier to reivew?

- Louis

On Fri, Oct 7, 2016 at 6:11 AM, Tim McManamey <tjmcmana...@gmail.com> wrote:

> Updated code is below.  Still doesn't work after calling .addMessage2(str)
>
> On Thursday, October 6, 2016 at 6:25:57 PM UTC-5, Louis Ryan wrote:
>>
>>
>>
>> On Wed, Oct 5, 2016 at 2:46 PM, Tim McManamey <tjmcm...@gmail.com> 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().b
>>> uild();
>>>
>>             ArrayHelloReply.Builder builder = arrayHelloReply.toBuilder();
>>
>                arrayHelloReply = builder.addMessage2(str).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().setN
>>> ame(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 grpc-io+u...@googlegroups.com.
>>> To post to this group, send email to grp...@googlegroups.com.
>>> Visit this group at https://groups.google.com/group/grpc-io.
>>> To view this discussion on the web visit https://groups.google.com/d/ms
>>> gid/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 grpc-io+unsubscr...@googlegroups.com.
> To post to this group, send email to grpc-io@googlegroups.com.
> 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/6bd01f07-c4df-4291-9a07-04dac59b9f3e%40googlegroups.com
> <https://groups.google.com/d/msgid/grpc-io/6bd01f07-c4df-4291-9a07-04dac59b9f3e%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 grpc-io+unsubscr...@googlegroups.com.
To post to this group, send email to grpc-io@googlegroups.com.
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/CADQ0XY0rwqc3sKHJMbh5dmXFA%2BMn5413xAd%2BYWzNvkZ69UwQsw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to