[ 
https://issues.apache.org/jira/browse/THRIFT-894?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12908320#action_12908320
 ] 

Bryan Duxbury commented on THRIFT-894:
--------------------------------------

The risk only comes from using both the buffer and the byte[] accessor. I 
suspect that people won't use both. 

One thing we could do: when someone calls the byte[] accessor, we could just 
wrap the copied byte[] in a new ByteBuffer and make that *the* buffer we have 
in the struct. You could argue that the maximum amount of damage is done the 
first time we copy, so we might as well preserve the results.

> Make default accessors for binary fields return byte[]; provide new accessors 
> to get ByteBuffer version
> -------------------------------------------------------------------------------------------------------
>
>                 Key: THRIFT-894
>                 URL: https://issues.apache.org/jira/browse/THRIFT-894
>             Project: Thrift
>          Issue Type: Improvement
>            Reporter: Bryan Duxbury
>            Assignee: Bryan Duxbury
>             Fix For: 0.5
>
>         Attachments: thrift-894-v2.patch, thrift-894.patch
>
>
> Folks have pointed out that it's not always best for users to interact with 
> the ByteBuffers that are now backing binary fields in our structs. In truth, 
> it seems like ByteBuffers are probably an expert means of access, with 
> associated benefits and complexities.
> I think we should generate two different sets of accessors for binary fields: 
> a default set, named like usual, that return and take byte[], and a second 
> set, named something like "get_buffer_for_<field>" that returns the 
> underlying ByteBuffer. The byte[] accessors can wrap around the ByteBuffer 
> ones as necessary.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to