From 7ac9268057f13d9203011b2b1f4da9d862dd90f6 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 5 May 2015 16:11:47 +0200 Subject: [PATCH] =?UTF-8?q?Kleine=20=C3=84nderungen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../InteractiveObjectHelper.java | 8 ++-- src/org/hwo/rpc/simple/SimpleRPCServer.java | 44 ++++++++++++++++--- 2 files changed, 43 insertions(+), 9 deletions(-) diff --git a/src/org/hwo/interactiveobjects/InteractiveObjectHelper.java b/src/org/hwo/interactiveobjects/InteractiveObjectHelper.java index 9e24822..f43832a 100644 --- a/src/org/hwo/interactiveobjects/InteractiveObjectHelper.java +++ b/src/org/hwo/interactiveobjects/InteractiveObjectHelper.java @@ -54,9 +54,11 @@ public class InteractiveObjectHelper { public static void showEditor(Object o) { - IInteractiveObjectEditor editor = getEditor(o); - editor.setInteractiveObject(o); - editor.setVisible(true); + if (o != null){ + IInteractiveObjectEditor editor = getEditor(o); + editor.setInteractiveObject(o); + editor.setVisible(true); + } } } diff --git a/src/org/hwo/rpc/simple/SimpleRPCServer.java b/src/org/hwo/rpc/simple/SimpleRPCServer.java index b88f3cf..dbcf34b 100644 --- a/src/org/hwo/rpc/simple/SimpleRPCServer.java +++ b/src/org/hwo/rpc/simple/SimpleRPCServer.java @@ -12,25 +12,60 @@ import java.net.InetAddress; import java.net.ServerSocket; import java.net.Socket; import java.util.Hashtable; +import java.util.LinkedList; +import java.util.List; public class SimpleRPCServer extends Thread{ + class ClientConnection extends Thread { + private Socket socket; + + public ClientConnection(Socket socket){ + this.socket = socket; + } + + @Override + public void run() { + try { + addClientConnection(this); + handleOneRequest(socket); + removeClientConnection(this); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + private List clientConnections; private Hashtable registeredObjects; private ServerSocket serverSocket; - private boolean exit; public SimpleRPCServer(InetAddress listenAddress,int port) throws IOException { this.registeredObjects = new Hashtable(); this.serverSocket = new ServerSocket(port, 5, listenAddress); + this.clientConnections = new LinkedList(); + } + + synchronized void addClientConnection(ClientConnection clientConnection){ + this.clientConnections.add(clientConnection); + } + + synchronized void removeClientConnection(ClientConnection clientConnection){ + this.clientConnections.remove(clientConnection); } @Override public void run() { while (!exit){ try { - handleOneRequest(); + Socket socket = serverSocket.accept(); + if (socket != null){ + ClientConnection client = new ClientConnection(socket); + client.start(); + } + } catch (IOException e) { e.printStackTrace(); } @@ -47,9 +82,7 @@ public class SimpleRPCServer extends Thread{ } } - public void handleOneRequest() throws IOException{ - Socket socket = serverSocket.accept(); - + public void handleOneRequest(Socket socket) throws IOException{ DataInputStream dis = new DataInputStream(socket.getInputStream()); int len = dis.readInt(); byte[] request = new byte[ len ]; @@ -106,7 +139,6 @@ public class SimpleRPCServer extends Thread{ e.printStackTrace(); } - return new byte[0]; }