Sounds like you can just write a ServerInterceptor (which holds the Metrics 
object) to intercept ServerCall.Listener.onMessage() and 
ServerCall.Listener.onComplete()/onCancel() and do the stuff. I doesn't 
seem to involve Context (assuming you meant io.grpc.Context).

On Monday, September 25, 2017 at 3:30:59 PM UTC-7, [email protected] wrote:
>
> Follow up question:
>
> In the same given scenario above, is it possible to have different 
> Contexts per message? The use case is that I'd like to have a metrics and 
> logging utility class on my server that is used to generate graphs and data 
> distributions using each call as a data point. So I'd like to pass around 
> this Metrics object across each call to do some unit of work on using its 
> member functions. 
>
>
> On Friday, September 22, 2017 at 11:56:16 AM UTC-7, [email protected] 
> wrote:
>>
>> Ahh I see! Thank you very much
>>
>> On Friday, September 22, 2017 at 11:43:50 AM UTC-7, Josh Humphries wrote:
>>>
>>> Headers are per stream, not per message. The whole stream is a single 
>>> HTTP round-trip. So the first thing the server sends back are response 
>>> headers. Then the response payload (which consists of zero or more 
>>> messages). Finally, you get trailers.
>>>
>>> To include metadata for each response message, you'll have to encode 
>>> that into your RPC schema -- e.g. add a map<string,string> field to your 
>>> response message (or whatever suits your need, the less stringly-typed 
>>> likely the better). Then your server can stuff that metadata into each 
>>> response message.
>>>
>>>
>>> ----
>>> *Josh Humphries*
>>> [email protected]
>>>
>>> On Fri, Sep 22, 2017 at 2:36 PM, <[email protected]> wrote:
>>>
>>>>
>>>> So to send header metadata with on each call we can use interceptors. 
>>>> Ex:
>>>> https://github.com/grpc/grpc-java/blob/166108a9438c22d06eb3b371b5ad34a75e14787c/examples/src/main/java/io/grpc/examples/header/HeaderClientInterceptor.java
>>>>
>>>> However, for bidirectional streaming case for a given stub/channel, the 
>>>> headers will only be sent once (via start() call). Is there a way to have 
>>>> every message after to also have the headers sent? 
>>>>
>>>> I see that there is a sendMessage 
>>>> https://github.com/grpc/grpc-java/blob/166108a9438c22d06eb3b371b5ad34a75e14787c/core/src/main/java/io/grpc/ServerCall.java#L128
>>>>  
>>>> call, but it only takes in the request message as a parameter. So i'm 
>>>> wondering if there's a way to send other parameters in the header on each 
>>>> subsequent message call in the stream. 
>>>>
>>>> Of course, I could add the parameters to the message body, but that 
>>>> could lead to a pretty large .proto definition. 
>>>>
>>>> Thanks!
>>>>
>>>> -- 
>>>> 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/32099406-cbbb-4e43-9821-9128faa34205%40googlegroups.com
>>>>  
>>>> <https://groups.google.com/d/msgid/grpc-io/32099406-cbbb-4e43-9821-9128faa34205%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/c0d56a48-828d-4d60-ab97-d52e19ca1f8e%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to