package org.freehep.connexion.rmi; import java.rmi.NotBoundException; import java.rmi.RemoteException; import java.rmi.registry.LocateRegistry; import java.rmi.registry.Registry; import org.freehep.connexion.jni.Connexion; import org.freehep.connexion.jni.ConnexionCallback; public class RMIConnexion extends Connexion { static class RMICallback extends ConnexionCallback { private Registry registry; private org.freehep.connexion.rmi.ConnexionCallback server; public void addDevice(int device) { try { getServer().addDevice(device); } catch (Exception e) { // ignore System.err.println(e); registry = null; } } public void removeDevice(int device) { try { getServer().removeDevice(device); } catch (Exception e) { // ignore System.err.println(e); registry = null; } } public void handleAxis(int device, int x, int y, int z, int rx, int ry, int rz) { try { getServer().handleAxis(device, x, y, z, rx, ry, rz); } catch (Exception e) { // ignore System.err.println(e); registry = null; } } public void handleButtons(int device, int value, int buttons) { try { getServer().handleButtons(device, value, buttons); } catch (Exception e) { // ignore System.err.println(e); registry = null; } } private org.freehep.connexion.rmi.ConnexionCallback getServer() throws RemoteException, NotBoundException { if (registry == null) { registry = LocateRegistry.getRegistry(); server = null; } if (server == null) { server = (org.freehep.connexion.rmi.ConnexionCallback) registry.lookup("Connexion"); } return server; } } /** * @param args */ public static void main(String[] args) { Connexion connexion = new RMIConnexion(); connexion.setConnexionCallback(new RMICallback()); connexion.run(); } }