appengine sdk1.2.8のmakeAsyncCall対応

appengine sdk1.2.8がprereleaseされたようです。

お仕事中についついtwitterを見てしまったために仕事中はだいぶむらむらしていました。


非同期呼び出し、ということで、これまで"makeSyncCall"でサービス呼び出しを行っていたものについて、"makeAsyncCall"もサポートされることになったようです。

datastore部分だけですが、makeAsyncCallできるソースを書いてみました。

http://code.google.com/p/balmysundaycandy/source/browse/trunk/balmysundaycandy-morelowlevel/src/balmysundaycandy/more/low/level/datastore/DatastoreOperation.java

僕が帰宅する13時間前にはもう中身の解明は終わっていたようで、http://twitter.com/shin1ogawa/status/6037869445 でmakeAsyncCallについてつぶやかれています。さすがです。

引数のApiConfigはともかく、戻りをFutureとするのは意味がないので、戻りのprotocol bufferをラップするFutureを返すようにしています。

http://code.google.com/p/balmysundaycandy/source/browse/trunk/balmysundaycandy-morelowlevel/src/balmysundaycandy/more/low/level/ProtocolMessageFuture.java


まだ動作確認をしていないのですが、トランザクションの開始や終了をasyncにしていったいどうなるというのでしょうか。あぶなげです。

リリースノートに記載がないようなので(もとねたチェックしてないです。。。)、もしかしたら全部動かないかもしれません。

AddActionとかNextとか、まだ真相を究明できていないサービス呼び出しはasyncCallの布石だったのかもしれません。サービス呼び出しのインターフェイスは換えられない可能性が高いので、もしかしたら将来追加するであろう機能を実装してたとか。


そういうわけで期待に胸が高まりますが、今日はこんなところです。明日はこれをためすために仕事をがんばらないと。