C++ Riak client?

David Leimbach leimy2k at gmail.com
Thu May 5 18:02:18 EDT 2011


I haven't completely abandoned mine yet either, but I've been finding that
some of the  I wanted to use with streambufs aren't going to pan out due to
the nature of a socket backed stream and the way protocol buffers expects it
to work.  Protocol Buffers expects the stream to be terminated when done
receiving a message *THEN* parse it rather than building the parsing in (I
think that's what happened anyway... I really need to check my notes I took
when I ran into this).  This does appear to make a simple socket fd backed
streambuf way to plug into any protocol buffers stream a bit more difficult
than I was hoping.

Then again, I may just not be overriding a particular member function that I
should be either.

Might get some time on the weekend to poke at this some more.

On the plus side I definitely had some Riak RPC binary protocol bits
working.  I was encoding/decoding Ping/Pong just fine (and they don't need
any Protocol Buffer anything to work).

Dave

On Sat, Apr 9, 2011 at 8:47 AM, Sean Cribbs <sean at basho.com> wrote:

> I didn't permanently abandon it, but it was much more fiddly than doing the
> same thing in pure Ruby.  I have plans to deliver separate "native" Protocol
> Buffers libraries for MRI and JRuby (at least) in 1.0 of the Ruby client.
>
> Because it's being confused in this conversation, I think it merits
> clarification -- the "protocol" that is used to talk to Riak and Google's
> Protocol Buffers are NOT the same thing. Riak uses a simple length- and
> message-code-prefixed binary protocol, in which the complex messages (ones
> that have bodies and not just the message code) are serialized via Google's
> Protocol Buffers.  So, while we don't use the RPC facilities in Google's
> library, the *serialization format* DOES use Protocol Buffers.
>
> Sorry for the confusion, we'll work to make that clearer in the wiki.
>
> Sean Cribbs <sean at basho.com>
> Developer Advocate
> Basho Technologies, Inc.
> http://basho.com/
>
> On Apr 8, 2011, at 9:17 PM, Scott Gonyea wrote:
>
> They are the same and you can actually see me plugging into the C++ code
> here:
>
> https://github.com/sgonyea/pabst/tree/master/ext
>
> But as part of an Objective-C library (called ObjFW).  So, the code is
> actually an Objective-C++ wrapper around the C++ PB code, that exchanges
> messages with Objective-C code (that hooks into Ruby).
>
> I believe Sean Cribbs has some initial C++-wrapper code in his Ripple
> repo...  Though he eventually abandoned it after C++ left him permanently
> cross-eyed (I think that's why).
>
> Scott
>
> On Apr 8, 2011, at 5:20 PM, Mike Oxford wrote:
>
> Be careful here..
>
> I do not thing Riak's "protocol buffers" are the same as Google's protocol
> buffers.
> Google's does bit-level packing and some other tricks that Riak does not
> do, even though they both use the ".proto" file extension and very very
> similar proto semantics.
>
> That said, if they ARE the same, then you can take the .proto files and
> generate C++ classes, and use the secondary library "protobuf-c" to generate
> C structs for the wire format.
>
> -mox
>
> On Fri, Apr 8, 2011 at 4:43 PM, David Leimbach <leimy2k at gmail.com> wrote:
>
>> Spent a little time poking at this today... Kind of surprised that there
>> was no message defined for PingReq or for listing buckets.
>>
>> I realize these messages really have no usable payload, and just sort of
>> have a tag and length, but for completeness it kind of feels like they
>> should be there.
>>
>> Of course I'm not a Protocol Buffers expert in any sense, so I can't say
>> whether this is a normal kind of choice or not.
>>
>> Dave
>>
>>
>> On Fri, Apr 8, 2011 at 2:49 PM, Scott Gonyea <scott at aitrus.org> wrote:
>>
>>> If we had this then a C-wrapper would be that much more attainable. So,
>>> the author of such a lib would be a superstar in my book :).
>>>
>>> Sent from my iPhone
>>>
>>> On Apr 8, 2011, at 1:46 PM, David Leimbach <leimy2k at gmail.com> wrote:
>>>
>>> > I've been writing a bit of code in Haskell to push data to Riak, and
>>> the bindings are pretty easy to use (Thanks Brian!), but getting penetration
>>> at my company for Haskell is going to take a little time.
>>> >
>>> > As such I'm just wondering if anyone knows of anyone working on a
>>> protocol buffers version of a Riak client in C++, or if this is going to be
>>> something I'll have to take on.
>>> >
>>> > I've found a few generic looking C++ projects that use Boost's
>>> asynchronous IO stuff with protocol buffers to make an RPC system, but I'm
>>> not sure if any of those are implicitly compatible.
>>> >
>>> > Guess I'm just looking for a pointer...
>>> >
>>> > Dave
>>> > _______________________________________________
>>> > riak-users mailing list
>>> > riak-users at lists.basho.com
>>> > http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
>>>
>>
>>
>> _______________________________________________
>> riak-users mailing list
>> riak-users at lists.basho.com
>> http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
>>
>>
> _______________________________________________
> riak-users mailing list
> riak-users at lists.basho.com
> http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
>
>
> _______________________________________________
> riak-users mailing list
> riak-users at lists.basho.com
> http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
>
>
>
> _______________________________________________
> riak-users mailing list
> riak-users at lists.basho.com
> http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.basho.com/pipermail/riak-users_lists.basho.com/attachments/20110505/52c05f67/attachment.html>


More information about the riak-users mailing list