Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 package org.ros.internal.node.client;
00018
00019 import org.apache.xmlrpc.client.XmlRpcClient;
00020 import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;
00021 import org.apache.xmlrpc.client.XmlRpcCommonsTransportFactory;
00022 import org.ros.exception.RosRuntimeException;
00023 import org.ros.internal.node.server.XmlRpcServer;
00024 import org.ros.internal.node.xmlrpc.XmlRpcClientFactory;
00025 import org.ros.internal.node.xmlrpc.XmlRpcEndpoint;
00026
00027 import java.net.MalformedURLException;
00028 import java.net.URI;
00029
00038 abstract class Client<T extends XmlRpcEndpoint> {
00039
00040
00041
00042 private static final int CONNECTION_TIMEOUT = 60 * 1000;
00043 private static final int REPLY_TIMEOUT = 60 * 1000;
00044 private static final int XMLRPC_TIMEOUT = 10 * 1000;
00045
00046 private final URI uri;
00047
00048 protected final T xmlRpcEndpoint;
00049
00056 public Client(URI uri, Class<T> interfaceClass) {
00057 this.uri = uri;
00058 XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
00059 try {
00060 config.setServerURL(uri.toURL());
00061 } catch (MalformedURLException e) {
00062 throw new RosRuntimeException(e);
00063 }
00064 config.setConnectionTimeout(CONNECTION_TIMEOUT);
00065 config.setReplyTimeout(REPLY_TIMEOUT);
00066
00067 XmlRpcClient client = new XmlRpcClient();
00068 client.setTransportFactory(new XmlRpcCommonsTransportFactory(client));
00069 client.setConfig(config);
00070
00071 XmlRpcClientFactory<T> factory = new XmlRpcClientFactory<T>(client);
00072 xmlRpcEndpoint =
00073 interfaceClass.cast(factory.newInstance(getClass().getClassLoader(), interfaceClass, "",
00074 XMLRPC_TIMEOUT));
00075 }
00076
00080 public URI getRemoteUri() {
00081 return uri;
00082 }
00083 }