[ https://issues.apache.org/jira/browse/THRIFT-4914?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16954410#comment-16954410 ]
Duru Can Celasun commented on THRIFT-4914: ------------------------------------------ > if we want something similar that's injected in the context object, this will > be a breaking API change Yes, but that's fine. Adding context the first time was a breaking change as well. > do we return an extra value as the context? that would look very weird I agree it would look weird. Perhaps we could return a struct instead. For example, given the following IDL: {code:go} service Example { bool example() throws(1: MyException e) } {code} we could generate code like: {code:go} type ExampleResponse { Ctx context.Context // context with headers R bool // response Err error // exception } type Example interface { Example() (*ExampleResponse) } {code} Still a BC break, but much better than returning 3 values from every RPC. What do you think? > Go: Link between THeader and context object > ------------------------------------------- > > Key: THRIFT-4914 > URL: https://issues.apache.org/jira/browse/THRIFT-4914 > Project: Thrift > Issue Type: New Feature > Components: Go - Library > Reporter: Yuxuan Wang > Priority: Major > Time Spent: 0.5h > Remaining Estimate: 0h > > We have "raw" THeader support for Go in THRIFT-4612 now, the next step would > be to make them more easily accessible. > The are 2 directions, 4 parts of this ticket: > * client -> server (requests) > ** Read headers on server > ** Write headers on client > * server -> client (responses) > ** Write headers on server > ** Read headers on client > Take the reading on server as an example. Currently we can read the headers > from either the transport or the protocol, but neither the transport nor the > protocol objects are "easily accessible" when you are writing the business > logic code (writing the request handler in the server code). It would be much > better if we inject the headers into the context object passed into the > request handlers. > We already have code injecting the headers to the context object that lives > outside of the thrift library working. I'll send out a PR in the coming days > to add that to the thrift library, so the performance would be better (we no > longer need to do the extra injecting work), and it would be a lot easier to > use. > We'll think about how to best do the client writing part (probably auto read > the headers from the context object that passed into the client request code, > and write to THeaderProtocol automatically), and send out a PR soon-ish. > The other direction, server -> client, is used much less often with headers, > so we'll probably punt on it for now, and come back revisit them in the > future. -- This message was sent by Atlassian Jira (v8.3.4#803005)