Question

I have started a project to write an async PostgreSQL driver on Scala and to be async, I need to accept callbacks and use futures, but then accepting a callback and a future makes the code cumbersome because you always have to send a callback even if it is useless.

Here's a test:

"insert a row in the database" in {

  withHandler {
    (handler, future) =>
      future.get(5, TimeUnit.SECONDS)
      handler.sendQuery( this.create ){ query =>  }.get( 5, TimeUnit.SECONDS )
      handler.sendQuery( this.insert ){ query =>  }.get( 5, TimeUnit.SECONDS ).rowsAffected === 1
  }

}

Sending the empty callback is horrible but I couldn't find a way to make it optional or anything like that, so right now I don't have a lot of ideas on how this external API should look like.

It could be something like:

handler.sendQuery( this.create ).addListener { query => println(query) }

But then again, I'm not sure how people are organizing API's in this regard. Providing examples in other projects would also be great.

No correct solution

Licensed under: CC-BY-SA with attribution
scroll top