From da731d2bb81666b9c697d9099da632e7dfcdc0f7 Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Tue, 9 Sep 2014 12:13:21 +0200 Subject: Replaced int sysKey Item identifier with UUID, which is now portable. ItemPath objects are now used to identify Items throughout the kernel, replacing ints and Integers. --- .../entity/proxy/ProxyClientConnection.java | 31 +++++++++++----------- 1 file changed, 16 insertions(+), 15 deletions(-) (limited to 'src/main/java/com/c2kernel/entity/proxy/ProxyClientConnection.java') diff --git a/src/main/java/com/c2kernel/entity/proxy/ProxyClientConnection.java b/src/main/java/com/c2kernel/entity/proxy/ProxyClientConnection.java index 3a7e129..95104cf 100644 --- a/src/main/java/com/c2kernel/entity/proxy/ProxyClientConnection.java +++ b/src/main/java/com/c2kernel/entity/proxy/ProxyClientConnection.java @@ -11,6 +11,7 @@ import java.util.ArrayList; import java.util.Iterator; import com.c2kernel.common.InvalidDataException; +import com.c2kernel.lookup.ItemPath; import com.c2kernel.process.Gateway; import com.c2kernel.utils.Logger; import com.c2kernel.utils.server.SocketHandler; @@ -29,7 +30,7 @@ public class ProxyClientConnection implements SocketHandler { Socket clientSocket = null; static int clientId = -1; int thisClientId; - ArrayList sysKeys; + ArrayList subscribedItems; PrintWriter response; BufferedReader request; boolean closing = false; @@ -59,7 +60,7 @@ public class ProxyClientConnection implements SocketHandler { newSocket.setSoTimeout(500); clientSocket = newSocket; response = new PrintWriter(clientSocket.getOutputStream(), true); - sysKeys = new ArrayList(); + subscribedItems = new ArrayList(); } catch (SocketException ex) { Logger.msg("Could not set socket timeout:"); Logger.error(ex); @@ -116,18 +117,18 @@ public class ProxyClientConnection implements SocketHandler { // new subscription to entity changes else if (message.getPath().equals(ProxyMessage.ADDPATH)) { - Logger.msg(7, "ProxyClientConnection "+thisClientId+" subscribed to "+message.getSysKey()); - synchronized (sysKeys) { - sysKeys.add(new Integer(message.getSysKey())); + Logger.msg(7, "ProxyClientConnection "+thisClientId+" subscribed to "+message.getItemPath()); + synchronized (subscribedItems) { + subscribedItems.add(message.getItemPath()); } } // remove of subscription to entity changes else if (message.getPath().equals(ProxyMessage.DELPATH)) { - synchronized (sysKeys) { - sysKeys.remove(new Integer(message.getSysKey())); + synchronized (subscribedItems) { + subscribedItems.remove(message.getItemPath()); } - Logger.msg(7, "ProxyClientConnection "+thisClientId+" unsubscribed from "+message.getSysKey()); + Logger.msg(7, "ProxyClientConnection "+thisClientId+" unsubscribed from "+message.getItemPath()); } else // unknown message @@ -137,11 +138,11 @@ public class ProxyClientConnection implements SocketHandler { public synchronized void sendMessage(ProxyMessage message) { if (clientSocket==null) return; // idle - boolean relevant = message.getSysKey() == ProxyMessage.NA; - synchronized (sysKeys) { - for (Iterator iter = sysKeys.iterator(); iter.hasNext() && !relevant;) { - Integer thisKey = iter.next(); - if (thisKey.intValue() == message.getSysKey()) + boolean relevant = message.getItemPath() == null; + synchronized (subscribedItems) { + for (Iterator iter = subscribedItems.iterator(); iter.hasNext() && !relevant;) { + ItemPath thisKey = iter.next(); + if (thisKey.equals(message.getItemPath())) relevant = true; } } @@ -175,8 +176,8 @@ public class ProxyClientConnection implements SocketHandler { Logger.error("ProxyClientConnection "+thisClientId+" - Could not close socket."); Logger.error(e); } - synchronized (sysKeys) { - sysKeys = null; + synchronized (subscribedItems) { + subscribedItems = null; } clientSocket = null; -- cgit v1.2.3