Ehcacheの自動ピア・ディスカバリ周りのコードを読んでみる(その4)
MulticastKeepaliveHeartbeatReceiver$MulticastReceiverThread
ハートビートを受け取るのは、CacheManager の初期化時に別スレッドとして作成・実行された MulticastReceiverThread です。このスレッドは、dispose()メソッドが呼び出されるまで、内部のwhileループでハートビート受信処理を行い続けます。以下に、run内部のループ処理を示します。
- ハートビートの受信。受信し終わるまでブロック。
- ハートビートから、RMIのURL情報のリストを取り出す。
- 自分自身の放ったハートビートかどうかを確認。(CacheManagerPeerListenerから全ピア情報を取り出し、先頭の1つだけからURLのベース情報を取得し、情報がマッチするかどうかを確認。マッチしたら、自分自身のハートビートと認識)
- 自分自身の放ったハートビートであれば、何もしないでループ処理の先頭に戻る。
- 受け取った情報を処理する。(この中でRMIのルックアップとかしてます)
ここまでで、ハートビートの本質的な部分のソースは追えたという感じでしょうか。
ピアは各キャッシュ単位なので、自動ピア・ディスカバリのソースリーディングはまだまだ続きます。