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

Vanja Bucic commented on THRIFT-1766:
-------------------------------------

There are still some issues though. A simple example of binary usage does not 
work - it ignores the binary flag, calls 'write_string' instead of 
'write_binary' which in turn bombs in encode. Did not want to reopen this issue 
or create another one until someone takes a look at it. Of note is that 
struct.c seems to be missing any references to binary types.

The test case is small, I'll just paste it here.

{code:title=binary_test.thrift|borderStyle=solid}
namespace rb BinaryTest
struct KVPair {
    1: string key
    2: binary value
}
service BTest {
    void aservice(1:string myid, 2:KVPair data);
}
{code}


{code:title=test_bin.rb|borderStyle=solid}
transport = Thrift::MemoryBufferTransport.new()
protocol  = Thrift::CompactProtocol.new(transport)
client    = BinaryTest::BTest::Client.new(protocol)
transport.open()
kv = BinaryTest::KVPair.new
kv.key = 'my_bin_key'
kv.value = 0.upto(255).map { |i| i.chr }.join ''
client.aservice 'some_key', kv
{code}

results in:
"\x80" from ASCII-8BIT to UTF-8
{color:red} 
/opt/local/lib/ruby2.1/gems/2.1.0/gems/thrift-0.9.1/lib/thrift/bytes.rb:89:in 
`encode' {color}
/opt/local/lib/ruby2.1/gems/2.1.0/gems/thrift-0.9.1/lib/thrift/bytes.rb:89:in 
`convert_to_utf8_byte_buffer'
{color:red} 
/opt/local/lib/ruby2.1/gems/2.1.0/gems/thrift-0.9.1/lib/thrift/client.rb:36:in 
`write_string' {color}
/opt/local/lib/ruby2.1/gems/2.1.0/gems/thrift-0.9.1/lib/thrift/client.rb:36:in 
`write'
/opt/local/lib/ruby2.1/gems/2.1.0/gems/thrift-0.9.1/lib/thrift/client.rb:36:in 
`send_message'
/Users/vanjab/RubymineProjects/RubyBase_SVN/scratch/vanjab/thrift/binary_test/gen-rb/b_test.rb:21:in
 `send_aservice'
/Users/vanjab/RubymineProjects/RubyBase_SVN/scratch/vanjab/thrift/binary_test/gen-rb/b_test.rb:16:in
 `aservice'


> [Ruby] Provide support for binary types
> ---------------------------------------
>
>                 Key: THRIFT-1766
>                 URL: https://issues.apache.org/jira/browse/THRIFT-1766
>             Project: Thrift
>          Issue Type: Sub-task
>          Components: Ruby - Library
>    Affects Versions: 0.9
>            Reporter: Nathan Beyer
>            Assignee: Nathan Beyer
>         Attachments: THRIFT-1766-provide-support-for-binary-types.patch
>
>
> The Ruby library didn't provide explicit support for 'binary' types, which 
> sort of worked on Ruby 1.8.7 and with Thrift 0.8, but it doesn't work with 
> Ruby 1.9.3 and the encoding changes that were included with Thrift 0.9.
> This issue is intended to provide first class support for the 'binary' type.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to