On 22 Jun 2011, at 12:32, Jon Brisbin wrote: > I should have thought of that before. It would have saved me some time. :) > There's several things in there I can use to help (like RiakResponse, > IRiakObject, etc...). > > The only thing I would say is that I was wanting to return Futures for > everything, rather than the responses themselves (and/or take a callback). > Maybe introduce a RiakResponseCallback based on the CompletionHandler > (success/failed/error, etc...) and also have an RawAsyncClient that returns > Future<RiakResponse> and has a void method version that takes said > RiakResponseCallback? The synchronous client can just call get() on > everything.
Well, you have 2 choices 1) Abstract away the fact that your client is async, so you can implement RiakResponse etc as wrappers around a Future, first call to a method calls get on the Future 2) You can require your users to think aysnc and code callbacks If you do the latter (or both) you might be best extending the RawClient interface (or just defining a new one (your RawAsyncClient)) if you re-use stuff like RiakResponse/IRiakObject etc then it would be awesome and much easier to integrate into the Basho library. It would be great to offer library users the option to go async without changing their higher-level code. Whichever, get it up on github and we can start playing around with it! :D > > Thanks! > > Jon Brisbin > http//jbrisbin.com > > > From: "Russell Brown" <[email protected]> > To: "Jon Brisbin" <[email protected]> > Cc: "riak-users Users" <[email protected]> > Sent: Wednesday, June 22, 2011 2:27:17 AM > Subject: Re: Riak async PB client based on Grizzly > > Hey Jon, > Any chance you want to implement the RawClient interface > (https://github.com/basho/riak-java-client/blob/master/src/main/java/com/basho/riak/client/raw/RawClient.java) > from the basho riak-java-client library? That way your client can be swapped > straight into the basho lib? > > If not, let me know when you get a repo up on github and I'll write an > adapter so that the basho riak-java-client can make use of your Grizzly > client, which I guess means I'll pitch in a little (time permitting) to help > shape the Grizzly client so it is RawClient shaped. > > Cheers > > Russell > > On 21 Jun 2011, at 17:58, Jon Brisbin wrote: > > I'm trying to get my feet wet with Grizzly on another project, so I've been > spending some late(ish) nights also working on a Grizzly-based asynchronous > PB client for Riak. I'm dropping all the way down to the protobuf level and > using Grizzly's NIO abstractions to implement a completely non-blocking > client. I'm writing the low-level stuff in Java and I'd really like to build > a Scala layer on top of this, which uses the nice Scala idioms (operators, > case classes, etc...). But I can't write code as fast in Scala as I can in > Java and some of the Java APIs inside Grizzly aren't all that Scala-friendly > and make the code pretty ugly. I figured it would be better to implement a > fairly low-level PB client in Java and flesh out the user-facing API in Scala > and/or Java. > > My question is basically, if I seed this project on GitHub with what I've got > so far, would anyone else be interested in helping complete it? I'm just > working on this after my other Grizzly work, so I can't devote full time to > it. It might take me a little while to implement things like links and > mapreduce. > > I think it shows some real promise because it is completely non-blocking. It > uses Futures and CompletionHandlers to do the dirty work. A Grizzly filter is > responsible for the actual encoding/decoding of protobuf data. Right now, it > will marshall JSON using Jackson if your content-type is set to > "application/json", otherwise it uses JDK serialization to encode the entry > (or just passes a String straight through, of course). > > Since it's a first pass, there is no real attempt to separate the protobuf > stuff from the client. That's a v2 thing. Since I have limited time, I'm > interested in speed to completion of features rather than good-looking and > properly abstracted code. :) > > Thanks! > > Jon Brisbin > http//jbrisbin.com > > > _______________________________________________ > riak-users mailing list > [email protected] > http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com > > > _______________________________________________ > riak-users mailing list > [email protected] > http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
_______________________________________________ riak-users mailing list [email protected] http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
