📄 primefind.java
字号:
package net.jxta.impl.shell.bin.primefind;import net.jxta.impl.shell.ShellApp;import net.jxta.impl.shell.ShellEnv;import net.jxta.impl.shell.ShellObject;import net.jxta.peergroup.PeerGroup;import net.jxta.id.ID;import net.jxta.document.Advertisement;import net.jxta.document.MimeMediaType;import net.jxta.document.StructuredTextDocument;import net.jxta.document.StructuredDocumentFactory;import net.jxta.pipe.OutputPipe;import net.jxta.endpoint.Message;import net.jxta.endpoint.MessageElement;import primecruncher.Dispatcher;import primecruncher.ResultListener;import primecruncher.ServiceConstants;import java.util.Map;import java.io.IOException;import java.io.ByteArrayInputStream;public class primefind extends ShellApp implements ResultListener { ShellEnv environment; Dispatcher dispatcher = null; String result; public primefind() { } /** * Called when the shell command is started. */ public int startApp(String[] argv) { environment = getEnv(); if (argv.length != 2) { return ShellApp.appParamError; } int low; int high; try { low = Integer.parseInt(argv[0]); high = Integer.parseInt(argv[1]); } catch (NumberFormatException e) { return ShellApp.appParamError; } dispatcher = new Dispatcher(getGroup()); dispatcher.processPrimes(low, high, this); synchronized(this) { try { wait(); } catch (InterruptedException me) { } } Message mes = getGroup().getPipeService().createMessage(); MessageElement el = mes.newMessageElement("results", new MimeMediaType("text/plain"), result.getBytes()); mes.addElement(el); try { outputPipe.send(mes); StructuredTextDocument doc = (StructuredTextDocument)StructuredDocumentFactory.newStructuredDocument( new MimeMediaType("text/xml"), "result", result); ShellObject so = new ShellObject("results", doc); environment.add("results", so); } catch (IOException e) { e.printStackTrace(); } return ShellApp.appNoError; } public void stopApp() { super.stopApp(); } public void help() { println("NAME"); println(" primefind -- find prime numbers between two integers"); println(" "); println("SYNOPSYS"); println(" "); println(" primefind X Y"); println(" "); println("DESCRIPTION"); println("'primefind' utilizes peers offering a prime number finding "); println("service to search prime numbers in a distributed manner."); println("When invoked, 'primefind' discovers peers offering that "); println("service, distributes the list of numbers between the two"); println("parameters among those peers, and waits for the peers to"); println("respond with their results. Once all results are obtained,"); println("'primefind' produces a comma-separated list of prime numbers"); println("on its standard output. Note that this command relies on "); println("other peers to search prime numbers; If no peer offering"); println("that service is available, 'primefind' will block until "); println("at least one such peer is discovered."); println(" "); println("EXAMPLE"); println(" "); println(" JXTA>primefind 10 100"); println(" "); println("This command produces a list of all prime numbers between"); println("10 and 100 on its standard ouput."); println(" "); } public String getDescription() { return "Search for prime numbers"; } public void resultEvent (Map resultMap) { synchronized(this) { result = (String)resultMap.get(ServiceConstants.RESULTSTRING); if (result != null) System.out.println("Result is not null"); System.out.println("result even called"); notifyAll(); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -