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.  <br>
<br>Then again, I may just not be overriding a particular member function that I should be either.<br><br>Might get some time on the weekend to poke at this some more.<br><br>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).<br>
<br>Dave<br><br><div class="gmail_quote">On Sat, Apr 9, 2011 at 8:47 AM, Sean Cribbs <span dir="ltr"><<a href="mailto:sean@basho.com">sean@basho.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div style="word-wrap: break-word;">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.<div>
<br></div><div>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.</div>
<div><br></div><div>Sorry for the confusion, we'll work to make that clearer in the wiki.</div><div><br><font color="#888888"><div>
<span style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"><div>
Sean Cribbs <<a href="mailto:sean@basho.com" target="_blank">sean@basho.com</a>></div><div>Developer Advocate</div><div>Basho Technologies, Inc.</div><div><a href="http://basho.com/" target="_blank">http://basho.com/</a></div>
</span>
</div></font><div><div></div><div class="h5">
<br><div><div>On Apr 8, 2011, at 9:17 PM, Scott Gonyea wrote:</div><br><blockquote type="cite"><div style="word-wrap: break-word;"><div>They are the same and you can actually see me plugging into the C++ code here:</div>
<div><br></div><div><a href="https://github.com/sgonyea/pabst/tree/master/ext" target="_blank">https://github.com/sgonyea/pabst/tree/master/ext</a></div><div><br></div><div>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).</div>
<div><br></div><div>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).</div><div><br></div>
<div>Scott</div><br><div><div>On Apr 8, 2011, at 5:20 PM, Mike Oxford wrote:</div><br><blockquote type="cite"><div style="border-collapse: collapse; font-family: arial,sans-serif; font-size: 13px;">Be careful here..</div>
<div style="border-collapse: collapse; font-family: arial,sans-serif; font-size: 13px;"><br></div><div style="border-collapse: collapse; font-family: arial,sans-serif; font-size: 13px;">I do not thing Riak's "protocol buffers" are the same as Google's protocol buffers.</div>
<span style="border-collapse: collapse; font-family: arial,sans-serif; font-size: 13px;">
</span><div style="border-collapse: collapse; font-family: arial,sans-serif; font-size: 13px;">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.</div>
<div style="border-collapse: collapse; font-family: arial,sans-serif; font-size: 13px;"><br></div><div style="border-collapse: collapse; font-family: arial,sans-serif; font-size: 13px;">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.</div>
<span style="border-collapse: collapse; font-family: arial,sans-serif; font-size: 13px;">
</span><div style="border-collapse: collapse; font-family: arial,sans-serif; font-size: 13px;"><br></div><div style="border-collapse: collapse; font-family: arial,sans-serif; font-size: 13px;">-mox</div><br><div class="gmail_quote">
On Fri, Apr 8, 2011 at 4:43 PM, David Leimbach <span dir="ltr"><<a href="mailto:leimy2k@gmail.com" target="_blank">leimy2k@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">

Spent a little time poking at this today... Kind of surprised that there was no message defined for PingReq or for listing buckets.<br><br>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.<br>


<br>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.<br><br>Dave<div><div></div><div><br><br><div class="gmail_quote">On Fri, Apr 8, 2011 at 2:49 PM, Scott Gonyea <span dir="ltr"><<a href="mailto:scott@aitrus.org" target="_blank">scott@aitrus.org</a>></span> wrote:<br>


<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">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 :).<br>



<br>
Sent from my iPhone<br>
<div><div></div><div><br>
On Apr 8, 2011, at 1:46 PM, David Leimbach <<a href="mailto:leimy2k@gmail.com" target="_blank">leimy2k@gmail.com</a>> wrote:<br>
<br>
> 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.<br>
><br>
> 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.<br>
><br>
> 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.<br>
><br>
> Guess I'm just looking for a pointer...<br>
><br>
> Dave<br>
</div></div>> _______________________________________________<br>
> riak-users mailing list<br>
> <a href="mailto:riak-users@lists.basho.com" target="_blank">riak-users@lists.basho.com</a><br>
> <a href="http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com" target="_blank">http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com</a><br>
</blockquote></div><br>
</div></div><br>_______________________________________________<br>
riak-users mailing list<br>
<a href="mailto:riak-users@lists.basho.com" target="_blank">riak-users@lists.basho.com</a><br>
<a href="http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com" target="_blank">http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com</a><br>
<br></blockquote></div><br>
_______________________________________________<br>riak-users mailing list<br><a href="mailto:riak-users@lists.basho.com" target="_blank">riak-users@lists.basho.com</a><br><a href="http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com" target="_blank">http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com</a><br>
</blockquote></div><br></div>_______________________________________________<br>riak-users mailing list<br><a href="mailto:riak-users@lists.basho.com" target="_blank">riak-users@lists.basho.com</a><br><a href="http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com" target="_blank">http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com</a><br>
</blockquote></div><br></div></div></div></div><br>_______________________________________________<br>
riak-users mailing list<br>
<a href="mailto:riak-users@lists.basho.com">riak-users@lists.basho.com</a><br>
<a href="http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com" target="_blank">http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com</a><br>
<br></blockquote></div><br>