📄 startnetpeergroup.java
字号:
(PeerAdvertisement)paEnum.nextElement();
if (pa.getPeerGroupID().equals(a.getPeerGroupID()))
{
self = "*";
if (!kw.equals("NetPeerGroup by default"))
{
// This user has used the disco
// option before therefore he
// wants to use it.
doDisco = doDisco || beSmart;
break;
}
}
}
advs.put(kw+a.getPeerGroupID().toString(), a);
System.out.println(self + " " + kw);
}
}
}
// If doDisco is not true the first time around (after
// a local discovery), then we don't want it.
if (! doDisco) {
advs.clear();
break;
}
}
Vector advVect = new Vector();
Enumeration enum = advs.elements();
// Make an ordered list and display it with numbering.
int s = 0;
while (enum.hasMoreElements()) {
PeerGroupAdvertisement a =
(PeerGroupAdvertisement) enum.nextElement();
String self = " ";
// Do a quick lookup for a past local instantiation.
// May not find anything if we do not publish padvs
// in the parent grp.
Enumeration paEnum = (new Vector().elements());
try {
paEnum = disco.getLocalAdvertisements(DiscoveryService.PEER,
"PID",
pg.getPeerID().toString());
} catch (Exception forgetIt) {
}
while (paEnum.hasMoreElements()) {
PeerAdvertisement pa =
(PeerAdvertisement) paEnum.nextElement();
if (pa.getPeerGroupID().equals(a.getPeerGroupID())) {
self = "*";
break;
}
}
System.out.println(self + s + ": " + a.getDescription());
advVect.addElement(a);
++s;
}
if (s > 0) {
while (true) {
System.out.println(" " + s + ": None of the above");
System.out.println("\n* = previously instantiated here\n");
try {
//changed
//while (in.ready()) in.readLine();
//end
System.out.print("Chose which advertisement you want"
+ " to use: ");
//changed
//answer = in.readLine();
answer = "0";
//end
int i = s + 1;
try {
i = Integer.parseInt(answer);
} catch(Exception ignored) {
}
if (i == s) break;
if (i >= 0 && i <= s) {
npgAdv = (PeerGroupAdvertisement) advVect.elementAt(i);
break;
}
i = 0;
System.out.println("\n\nFound:");
while (i < s) {
PeerGroupAdvertisement a =
(PeerGroupAdvertisement) advVect.elementAt(i);
String self = " ";
// Do a quick lookup for a past local instantiation.
// May not find anything if we do not publish padvs
// in the parent grp.
Enumeration paEnum =
disco.getLocalAdvertisements(DiscoveryService.PEER,
"PID",
pg.getPeerID().toString());
while (paEnum.hasMoreElements()) {
PeerAdvertisement pa =
(PeerAdvertisement) paEnum.nextElement();
if (pa.getPeerGroupID().equals(a.getPeerGroupID()))
{
self = "*";
break;
}
}
String kw = a.getDescription();
if (kw == null) kw = "";
System.out.println(self + i + ": " + kw);
i++;
}
} catch (Exception e) {
break;
}
}
}
if (npgAdv != null) {
// Good, just start it then. For now, we pass-on the conf.
PeerGroup g = pg.newGroup(npgAdv);
g.startApp(null);
return 0;
}
// Ok, then, maybe we should seed that group.
// NB: seeding the NPG right now is somewhat useless; since it creates
// nothing different form the default one. It is just there for the
// sake of example.
if (doDisco) {
System.out.println("\nNo NetPeerGroup advertisement selected.");
try {
while (in.ready()) in.readLine();
System.out.println("Do you want to start a shell in the "
+ "Platform Group ? [no]:");
answer = in.readLine();
if("yes".equalsIgnoreCase(answer)){
try {
// Build a ModuleImplAdv for the shell; cannot rely
// on the shell having been published yet.
// FIXME: Modules built-in jxta should have
// a static method for that.
ModuleImplAdvertisement newAppAdv =
(ModuleImplAdvertisement)
AdvertisementFactory.newAdvertisement(
ModuleImplAdvertisement.getAdvertisementType());
// The shell's spec id is a canned one.
newAppAdv.setModuleSpecID(PeerGroup.refShellSpecID);
// Don't known how to ID the document itself yet.
// Just use the spec
// FIXME: we should probably hash the adv, like for
// codat.
newAppAdv.setModuleSpecID(PeerGroup.refShellSpecID);
// Steal the compat, provider, and uri from the
// group's own impl adv. We DO want them identical in
// this case.
ModuleImplAdvertisement pgImpl =
(ModuleImplAdvertisement)pg.getImplAdvertisement();
newAppAdv.setCompat(pgImpl.getCompat());
newAppAdv.setUri(pgImpl.getUri());
newAppAdv.setProvider(pgImpl.getProvider());
// Make up a description
newAppAdv.setDescription("JXTA Shell reference"
+ " implementation");
// Tack in the class name
newAppAdv.setCode(
"net.jxta.impl.shell.bin.Shell.Shell");
// Finaly load and init the shell.
Application app = (Application)
pg.loadModule(PeerGroup.applicationClassID,
newAppAdv);
app.startApp(null);
return 0;
} catch (Exception e) {
e.printStackTrace();
System.err.println("Error loading Shell.");
}
}
//changed
//while (in.ready()) in.readLine();
//end
System.out.println("Do you want to start the default net peer"
+ " group ? [yes]:");
//changed
//answer = in.readLine();
answer = "yes";
//end
if("no".equalsIgnoreCase(answer)){
System.exit(0);
}
} catch(Exception e2) {
e2.printStackTrace();
System.err.println("Unable to query desired behaviour. "
+ "Starting the default net peer group.");
}
}
// We can start the net peer group now. (For now we pass-on the conf
PeerGroup g = PeerGroupFactory.newNetPeerGroup(pg);
g.startApp(null);
return 0;
} catch(Exception anythingElse) {
anythingElse.printStackTrace();
return 1;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -