JXTA Memo (3)

1つのパイプをアドバタイスメントして、チャットを実装しようとしたんですが、結局悩んだ挙句、こういう実装に。
・新しいパイプをアドバタイスメントして、それに入力と出力のパイプをバインドする場合。


PipeAdvertisement  chatAdv;
PeerGroup curGroup;                     //カレントのJoin済グループ
OutputPipe outPipe;
InputPipe inPipe;
private static final String PIPE_ADVERTISEMENT = "SamplePipeAdvertisement";
// ブートとか、グループへのJoinをしたことにして
try {
chatAdv = (PipeAdvertisement) AdvertisementFactory.newAdvertisement(
PipeAdvertisement.getAdvertisementType());
chatAdv.setName(PIPE_ADVERTISEMENT);
chatAdv.setPipeID((ID)IDFactory.newPipeID(curGroup.getPeerGroupID()));
chatAdv.setType(PipeService.PropagateType);
System.out.println(chatAdv.toString());
System.out.println("新規パイプ告知を作成しました。");
System.out.println(chatAdv.toString());
} catch (Exception ex) {
System.out.println("パイプ告知の作成に失敗しました。" + ex);
}
// チャット用パイプの告知を公開
try {
EZDiscovery.publishAdvertisement(curGroup, chatAdv, DiscoveryService.ADV);
System.out.println("パイプ告知を公開しました。");
} catch (Exception ex) {
System.out.println("パイプ告知の公開に失敗しました。" + ex);
}
try {
PipeService pipe = curGroup.getPipeService();
inPipe = pipe.createInputPipe(chatAdv, this);
System.out.println("入力パイプをバインドしました。");
} catch (IOException ex) {
System.out.println("入力パイプのバインドに失敗しました。" + ex);
}
try{
PipeService pipeSvc = curGroup.getPipeService();
pipeSvc.createOutputPipe(chatAdv, this);
System.out.println("出力パイプをバインドしました。");
} catch (Exception e) {
System.out.println("出力パイプのバインドに失敗しました。¥n" + e);
}

コメント

タイトルとURLをコピーしました