FindNodeを実装
RootingTableに、FindeNodeの機能を追加する
class KRootingTable {
...
...
...
List<KPeerInfo> findNode(KId id) {
List<KPeerInfo> ids = [];
for (KBucket b in _kBuckets) {
for (KPeerInfo i in b.iterable) {
ids.add(i);
}
}
ids.sort((KPeerInfo a, KPeerInfo b) {
return a.id.xor(id).compareTo(b.id.xor(id));
});
List<KPeerInfo> ret = [];
for (KPeerInfo p in ids) {
ret.add(p);
if (ret.length >= _kBucketSize) {
return ret;
}
}
return ret;
}
...
...
}(1) KNodeはUDPサーバー機能を持つ。
(2) Krpc Messageをパースする機能を持つ
(3) メッセージを送信する機能を持つ
(4) ネットワークへの参加用のコードを書く
(5) FindeNodeクエリに対応したレスポンスを返せるようにしよう
Last updated