From: <eg...@us...> - 2008-11-03 15:09:56
|
Revision: 12987 http://cdk.svn.sourceforge.net/cdk/?rev=12987&view=rev Author: egonw Date: 2008-11-03 15:09:47 +0000 (Mon, 03 Nov 2008) Log Message: ----------- Added a async client Added Paths: ----------- cdk-xws/trunk/xws-cdk-client/src/org/openscience/cdk/xws/client/CDKXWSExampleAsyncClient.java Added: cdk-xws/trunk/xws-cdk-client/src/org/openscience/cdk/xws/client/CDKXWSExampleAsyncClient.java =================================================================== --- cdk-xws/trunk/xws-cdk-client/src/org/openscience/cdk/xws/client/CDKXWSExampleAsyncClient.java (rev 0) +++ cdk-xws/trunk/xws-cdk-client/src/org/openscience/cdk/xws/client/CDKXWSExampleAsyncClient.java 2008-11-03 15:09:47 UTC (rev 12987) @@ -0,0 +1,119 @@ +/* $Revision: 6707 $ $Author: egonw $ $Date: 2006-07-30 16:38:18 -0400 (Sun, 30 Jul 2006) $ + * + * Copyright (C) 2008 Egon Willighagen <eg...@us...> + * + * Contact: cdk...@li... + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 + * of the License, or (at your option) any later version. + * All we ask is that proper credit is given for our work, which includes + * - but is not limited to - adding the above copyright notice to the beginning + * of your source code files, and to any copyright notice that you may distribute + * with programs based on this work. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + */ +package org.openscience.cdk.xws.client; + +import net.bioclipse.xws.client.Client; +import net.bioclipse.xws.client.IExecutionPipe; +import net.bioclipse.xws.client.IXmppItem; +import net.bioclipse.xws.client.adhoc.IFunction; +import net.bioclipse.xws.client.adhoc.IService; +import net.bioclipse.xws.client.listeners.ISimpleProcessListener; +import net.bioclipse.xws.exceptions.XmppException; +import net.bioclipse.xws.exceptions.XwsException; +import net.bioclipse.xws.xmpp.XMLConverter; + +import org.w3c.dom.Element; + +public class CDKXWSExampleAsyncClient { + + private static boolean finished = false; + private static int threadCount = 5; + + private String clientJID; + private String password; + private String server; + private int port; + private String serviceJID; + + private Client client; + + public CDKXWSExampleAsyncClient(String clientJID, String password, String server, + String port, String serverJID) { + this.clientJID = clientJID; + this.password = password; + this.server = server; + this.port = Integer.parseInt(port); + this.serviceJID = serverJID; + } + + public void connect() throws Exception { + IExecutionPipe epipe = new IExecutionPipe() { + public void exec(Runnable r) { + r.run(); + } + }; + + this.client = new Client(clientJID, password, server, this.port, epipe); + this.client.connect(); + } + + public IService getService() throws Exception { + IXmppItem item = this.client.getXmppItem(serviceJID, ""); + item = item.discoverSync(30000); + + if (item instanceof IService) { + return (IService)item; + } else { + return null; + } + } + + public static final void main(String[] args) throws Exception { + if (args.length != 5 ) { + System.out.println("Usage: java ExampleClient <clientJID> <pwd> <host> <port> <serviceJID>"); + return; + } + + CDKXWSExampleClient client = new CDKXWSExampleClient(args[0], args[1], args[2], args[3], args[4]); + client.connect(); + IService service = client.getService(); + + if (service != null) { + ISimpleProcessListener general_listener = new ISimpleProcessListener() { + private int counter = 0; + + public void onIqError(net.bioclipse.xws.client.adhoc.Process p, XmppException error) {} + public void onError(net.bioclipse.xws.client.adhoc.Process p, XwsException error) {} + public void onResult(net.bioclipse.xws.client.adhoc.Process p, Element output) { + counter++; + System.out.println("Output: " + counter); + System.out.println(XMLConverter.w3cElementToString(output)); + if (counter == threadCount) finished = true; + } + }; +// IFunction dummyFunction = service.getFunction("generate3Dcoordinates"); + IFunction dummyFunction = service.getFunction("calculateMass"); + for (int i = 0; i < threadCount; i++) { +// dummyFunction.invokeAsync("<molecule xmlns='http://www.cml-xml.org/schema/'/>", general_listener); + dummyFunction.invokeAsync("<smiles xmlns=\"urn:xws:cdk:input\">CCC</smiles>", general_listener); + } + + while (!finished) { + Thread.sleep(100); + } + } + } + +} \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |