開発者向けガイド[English | Japanese]last-updated: January 23, 2011 |
このガイドは、Overlay Weaver で動作する アプリケーションやルーティングアルゴリズムを開発する際に 最初に参照すべき先を示します。
Overlay Weaver はアプリケーション開発者に対して、 分散ハッシュ表 (DHT) とマルチキャスト (Mcast) という高レベルサービスを 提供しています。 これらを利用するためには、そのためのオブジェクトを取得して、 それぞれのインタフェース ow.dht.DHT と ow.mcast.Mcast を通して制御を行います。
ow.tool.util.toolframework.AbstractDHTBasedTool クラスの initialize メソッドを参照して下さい。 DHT オブジェクトを取得する方法が示されています。 グループマネージャサービスのサンプルコードは ow.tool.util.toolframework.AbstractMcastBasedTool クラスの initialize メソッドにあります。
高レベルサービスは、他のサービス群を組み立てて利用します。 この組み立て処理は高レベルサービスが行ってくれるため、 通常、開発者が意識する必要はありません。 とはいえ、開発者自身がこの組み立て処理を行うこともできますし、 それら他のサービスを個別に利用することもできます。
ow.dht.impl.BasicDHTImpl クラスと ow.mcast.impl.McastImpl クラスの コンストラクタを参照して下さい。 この組み立て処理が示されています。
新たにルーティングアルゴリズムを追加するためには、 プロバイダクラス、コンフィギュレーションクラス、そして アルゴリズムの実装自体を用意します。 それぞれのクラスは次のインタフェースを実装します: ow.routing パッケージの RoutingAlgorithmProvider、 RoutingAlgorithmConfiguration、 RoutingAlgorithm。
ow.routing.impl.AbstractRoutingAlgorithm クラスを継承して、アルゴリズムを実装できます。 このクラスは RoutingAlgorithm インタフェースを実装しています。 この方法を採る場合、実装クラスは次のメソッドを用意する必要があります。
また、ow.routing.RoutingAlgorithmFactory クラスの PROVIDERS フィールドに プロバイダクラスを追加する必要があります。
ツールキットが提供している既存のアルゴリズム実装を参照して下さい。 Chord、FRT-Chord、Kademlia、Koorde、Pastry、Tapestry の実装は、それぞれ次のパッケージにあります: ow.routing.chord、 ow.routing.frtchord、 ow.routing.kademlia、 ow.routing.koorde、 ow.routing.pastry、 ow.routing.tapestry。
main メソッドを持つ Java アプリケーションなら、 エミュレータ上で動作させることができます。 ただし、エミュレーションシナリオに従ってアプリケーションを制御したければ、 アプリケーションのメインクラスは ow.tool.emulator.EmulatorControllable インタフェースを implements する必要があります。 このインタフェースは invoke メソッドだけを持ちます。 実装する invoke メソッドは Writer を返し、 アプリケーションはそこからコマンドを読むようにします。 また、 引数として与えられる PrintStream out に出力を書き出すように作ります。
エミュレータ上のアプリケーションは通常通り、 ソケットなどの手段を使って通信を行えます。 その場合はもちろん、ポート番号の衝突は避ける必要があります。 アプリケーションが Overlay Weaver のメッセージングサービスを使っている場合、 全ての通信メッセージはエミュレータの中で受け渡しされます。