Streaming des Rückgabewertes

rpc ding (Foo) returns (stream Bar);

Konsequenzen:

  • Services
    • Bleiben syntaktisch gleich
    • onNext kann aber jetzt beliebig oft aufgerufen werden
  • Clients
    • Können nur noch asynchron sein

Streaming der Funktionsparameter

rpc dong (stream Foo) returns (Bar);

Konsequenzen:

  • Services
    • Service-Funktionen liefern jetzt einen StreamObserver zurück:

      public StreamObserver<Foo> dong(StreamObserver<Bar> responseObserver)
  • Clients
    • Können nur noch asynchron sein
    • Der Aufruf des Stubs liefert jetzt den StreamObserver zurück, mit dem man dann die Parameter übergeben kann:
      StreamObserver<Foo> sender =
        	  stub.storeMeasurement(/* StreamObserver<Bar> */ receiver);
       
      sender.onNext(/* ... */);
      sender.onCompleted();