花岡さん、首藤です。
> DHTFilter(EntryFilter) の使い方について教えてください.
これは、undocumented な隠し機能のようなもので、
(まだ) どこでも説明されてないです。
> そもそも,((DHTImpl<String>) dht) というようなキャストをやって,
> DHT.java のインタフェースをかいくぐっていいのでしょうか?
それよりも、DHTFactory.getFactory() で得た DHT 型のインスタンスを、
AdvancedDHT 型にキャストして使ってください。
AdvancedDHT に、そういった、フィルタ/更新機能付きの
put, get, remove が用意されてます。
DHTImpl クラスが入ってるような ○○.impl というパッケージは、
アプリから直接使うことは想定してないです。
> というようにすれば,指定した key でヒットしても,
> 対応する value が "foo" より大きくないと返さない,
> というようなフィルタがかけられるのではと思ってやってみました.
はい、その通りです。
> 意図した通りの結果になるときと,添付したログのように,
> NotSerializableException が発生するときがあります.
Overlay Weaver 側のバグでした。
修正して、0.1.3 をリリースしました。
バグでお時間をとらせてしまってごめんなさい。
α版 (?) ということで、お付き合い頂けますと幸いです。
助かりました。
> ローカルに <key,value> がある場合は成功して,
> リモートにある場合は Message.java:141 で DHTFilter のオブジェクトが
> シリアライズできずに例外が発生しているように思うのですが…
原因は、DHTFilter クラスが DHTImpl の inner クラスになっていたために、
DHTFilter のインスタンスと一緒に DHTImpl もシリアライズしようと
してしまっていたこと、でした。
> 環境は,
> (ibook/192.168.0.5): Mac OS X 10.4.4
> java version "1.5.0_05"
Mac OS X なんですね。
P2P 方面のソフトが Java で書かれていると「なーんだ Java か、捨て」
というような反応を頂くことが多いように感じているのですが、
こうやって僕が試したことのない環境 (e.g. Mac) で使って頂けるのは
Java の恩恵なわけで。まあ、いいことも悪いこともあるな、と。
Kazuyuki Shudo/首藤一幸 私をたばねないで あらせいとうの花のように
sh...@co... http://www.shudo.net/
|