title: GRPC: Client streaming with configuration message
body: <p>Here's a proto definition for a service that consumes a stream of events
  from a client</p>
  
  <pre><code>message Event {
    // ...
  }
  
  service EventService {
    rpc Publisher(stream Event) returns (google.protobuf.Empty);
  }
  </code></pre>
  
  <p>The problem is that the server needs to be told what to do with this stream.
  Ideally, it would first recieve an <code>Options</code> message:</p>
  
  <pre><code>message Event {
    // ...
  }
  
  message Options {
    // ...
  }
  
  service EventService {
    rpc Publisher(Options, stream Event) returns (google.protobuf.Empty);
  }
  </code></pre>
  
  <p>However, grpc only supports one parameter for <code>rpc</code> methods.
  One solution is to introduce an additional <code>PublishMessage</code> message which
  can contain either an <code>Options</code> or <code>Event</code> message.</p>
  
  <pre><code>message PublishMessage {
    oneof content {
      Options options = 1;
      Event event = 2;
    }
  }
  </code></pre>
  
  <p>The service would then expect the first <code>PublishMessage</code> to contain an <code>Options</code> message, with all subsequent ones containing <code>Event</code> messages. This introduces additional overhead from the wrapping message and makes the api a little clunky.</p>
  
  <p>Is there a cleaner way to achieve the same result?</p>