]> git.basschouten.com Git - openhab-addons.git/commitdiff
Normalized thread names (#9581)
authorHilbrand Bouwkamp <hilbrand@h72.nl>
Tue, 12 Jan 2021 21:10:01 +0000 (22:10 +0100)
committerGitHub <noreply@github.com>
Tue, 12 Jan 2021 21:10:01 +0000 (22:10 +0100)
Related to #8216

Signed-off-by: Hilbrand Bouwkamp <hilbrand@h72.nl>
22 files changed:
bundles/org.openhab.binding.alarmdecoder/src/main/java/org/openhab/binding/alarmdecoder/internal/handler/ADBridgeHandler.java
bundles/org.openhab.binding.atlona/src/main/java/org/openhab/binding/atlona/internal/net/SocketChannelSession.java
bundles/org.openhab.binding.atlona/src/main/java/org/openhab/binding/atlona/internal/pro3/AtlonaPro3Handler.java
bundles/org.openhab.binding.bluetooth.bluegiga/src/main/java/org/openhab/binding/bluetooth/bluegiga/handler/BlueGigaBridgeHandler.java
bundles/org.openhab.binding.bluetooth.bluegiga/src/main/java/org/openhab/binding/bluetooth/bluegiga/internal/BlueGigaSerialHandler.java
bundles/org.openhab.binding.caddx/src/main/java/org/openhab/binding/caddx/internal/CaddxCommunicator.java
bundles/org.openhab.binding.caddx/src/main/java/org/openhab/binding/caddx/internal/handler/CaddxBridgeHandler.java
bundles/org.openhab.binding.dscalarm/src/main/java/org/openhab/binding/dscalarm/internal/handler/EnvisalinkBridgeHandler.java
bundles/org.openhab.binding.dscalarm/src/main/java/org/openhab/binding/dscalarm/internal/handler/TCPServerBridgeHandler.java
bundles/org.openhab.binding.harmonyhub/src/main/java/org/openhab/binding/harmonyhub/internal/discovery/HarmonyHubDiscoveryService.java
bundles/org.openhab.binding.homematic/src/main/java/org/openhab/binding/homematic/internal/communicator/AbstractHomematicGateway.java
bundles/org.openhab.binding.homematic/src/main/java/org/openhab/binding/homematic/internal/communicator/server/BinRpcServer.java
bundles/org.openhab.binding.insteon/src/main/java/org/openhab/binding/insteon/internal/device/RequestQueueManager.java
bundles/org.openhab.binding.insteon/src/main/java/org/openhab/binding/insteon/internal/driver/Poller.java
bundles/org.openhab.binding.insteon/src/main/java/org/openhab/binding/insteon/internal/driver/Port.java
bundles/org.openhab.binding.insteon/src/main/java/org/openhab/binding/insteon/internal/driver/hub/HubIOStream.java
bundles/org.openhab.binding.keba/src/main/java/org/openhab/binding/keba/internal/KebaHandlerFactory.java
bundles/org.openhab.binding.keba/src/main/java/org/openhab/binding/keba/internal/handler/KeContactHandler.java
bundles/org.openhab.binding.keba/src/main/java/org/openhab/binding/keba/internal/handler/KeContactTransceiver.java
bundles/org.openhab.binding.linuxinput/src/main/java/org/openhab/binding/linuxinput/internal/Utils.java
bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/grxprg/PrgBridgeHandler.java
bundles/org.openhab.binding.lutron/src/main/java/org/openhab/binding/lutron/internal/grxprg/SocketSession.java

index 20701d340146a7157d89f46816844e7f97b5ae70..b4201665b0567522673aa162df3b7bbd5d030f48 100644 (file)
@@ -130,7 +130,7 @@ public abstract class ADBridgeHandler extends BaseBridgeHandler {
 
     protected void startMsgReader() {
         synchronized (msgReaderThreadLock) {
-            Thread mrt = new Thread(this::readerThread, "AD Reader");
+            Thread mrt = new Thread(this::readerThread, "OH-binding-" + getThing().getUID() + "-ADReader");
             mrt.setDaemon(true);
             mrt.start();
             msgReaderThread = mrt;
index 0c7b8dbe2cc8bcd502df5222065cc76acd4685ae..6e35a3b6beb4257a5ce8f5c3206ed6bb6302a97c 100644 (file)
@@ -39,6 +39,10 @@ import org.slf4j.LoggerFactory;
 public class SocketChannelSession implements SocketSession {
     private final Logger logger = LoggerFactory.getLogger(SocketChannelSession.class);
 
+    /**
+     * The uid of the calling thing
+     */
+    private final String uid;
     /**
      * The host/ip address to connect to
      */
@@ -77,10 +81,11 @@ public class SocketChannelSession implements SocketSession {
     /**
      * Creates the socket session from the given host and port
      *
+     * @param uid the thing uid of the calling thing
      * @param host a non-null, non-empty host/ip address
      * @param port the port number between 1 and 65535
      */
-    public SocketChannelSession(String host, int port) {
+    public SocketChannelSession(String uid, String host, int port) {
         if (host == null || host.trim().length() == 0) {
             throw new IllegalArgumentException("Host cannot be null or empty");
         }
@@ -88,6 +93,7 @@ public class SocketChannelSession implements SocketSession {
         if (port < 1 || port > 65535) {
             throw new IllegalArgumentException("Port must be between 1 and 65535");
         }
+        this.uid = uid;
         this.host = host;
         this.port = port;
     }
@@ -129,8 +135,12 @@ public class SocketChannelSession implements SocketSession {
         }
 
         socketChannel.set(channel);
-        new Thread(dispatcher).start();
-        new Thread(responseReader).start();
+        Thread dispatcherThread = new Thread(dispatcher, "OH-binding-" + uid + "-dispatcher");
+        dispatcherThread.setDaemon(true);
+        dispatcherThread.start();
+        Thread responseReaderThread = new Thread(responseReader, "OH-binding-" + uid + "-responseReader");
+        responseReaderThread.setDaemon(true);
+        responseReaderThread.start();
     }
 
     @Override
index c49874d98e729e2d8dcd1f78b243d28dfdf5ff1d..3de9a7049ca97d238b3820a9b43ba6f42ea4ac15 100644 (file)
@@ -449,7 +449,7 @@ public class AtlonaPro3Handler extends AtlonaHandler<AtlonaPro3Capabilities> {
             return;
         }
 
-        session = new SocketChannelSession(config.getIpAddress(), 23);
+        session = new SocketChannelSession(getThing().getUID().getAsString(), config.getIpAddress(), 23);
         atlonaHandler = new AtlonaPro3PortocolHandler(session, config, getCapabilities(),
                 new StatefulHandlerCallback(new AtlonaHandlerCallback() {
                     @Override
index 0150ba3954aaf3426f75fce0433031bb4bf29092..e57e3d56a5d40b337e9cce00e4331e1c53c71c05 100644 (file)
@@ -234,7 +234,8 @@ public class BlueGigaBridgeHandler extends AbstractBluetoothBridgeHandler<BlueGi
             }, executor);
 
             serialHandler = serialPortFuture
-                    .thenApply(sp -> new BlueGigaSerialHandler(inputStream.get(), outputStream.get()));
+                    .thenApply(sp -> new BlueGigaSerialHandler(getThing().getUID().getAsString(), inputStream.get(),
+                            outputStream.get()));
             transactionManager = serialHandler.thenApply(sh -> {
                 BlueGigaTransactionManager th = new BlueGigaTransactionManager(sh, executor);
                 sh.addHandlerListener(this);
index b9c28629ba27bdcbedff3a4f1d2b4a0bf63431f3..c08d70ce3f7e2ce32aeb19fb88c6c139cbca6f44 100644 (file)
@@ -59,12 +59,12 @@ public class BlueGigaSerialHandler {
     private final InputStream inputStream;
     private final Thread parserThread;
 
-    public BlueGigaSerialHandler(final InputStream inputStream, final OutputStream outputStream) {
+    public BlueGigaSerialHandler(final String uid, final InputStream inputStream, final OutputStream outputStream) {
         this.outputStream = outputStream;
         this.inputStream = inputStream;
 
         flush();
-        parserThread = createBlueGigaBLEHandler();
+        parserThread = createBlueGigaBLEHandler(uid);
         parserThread.setUncaughtExceptionHandler((t, th) -> {
             logger.warn("BluegigaSerialHandler terminating due to unhandled error", th);
         });
@@ -323,7 +323,7 @@ public class BlueGigaSerialHandler {
         logger.debug("BlueGiga BLE exited.");
     }
 
-    private Thread createBlueGigaBLEHandler() {
-        return new Thread(this::inboundMessageHandlerLoop, "BlueGigaBLEHandler");
+    private Thread createBlueGigaBLEHandler(String uid) {
+        return new Thread(this::inboundMessageHandlerLoop, "OH-binding-" + uid + "-blueGigaBLEHandler");
     }
 }
index 4dea3886a5cd58d66ee2949f4d6fa4a86d8150be..c06204c20f510b82aef8e28ada3c3604b061ef14 100644 (file)
@@ -68,7 +68,8 @@ public class CaddxCommunicator implements SerialPortEventListener {
     private boolean unStuff = false;
     private int tempAsciiByte = 0;
 
-    public CaddxCommunicator(SerialPortManager portManager, CaddxProtocol protocol, String serialPortName, int baudRate)
+    public CaddxCommunicator(String uid, SerialPortManager portManager, CaddxProtocol protocol, String serialPortName,
+            int baudRate)
             throws UnsupportedCommOperationException, PortInUseException, IOException, TooManyListenersException {
         this.portManager = portManager;
         this.protocol = protocol;
@@ -101,7 +102,7 @@ public class CaddxCommunicator implements SerialPortEventListener {
         serialPort.notifyOnDataAvailable(true);
         serialPort.addEventListener(this);
 
-        communicator = new Thread(this::messageDispatchLoop, "Caddx Communicator");
+        communicator = new Thread(this::messageDispatchLoop, "OH-binding-" + uid + "-caddxCommunicator");
         communicator.setDaemon(true);
         communicator.start();
 
index d3f8c811dafce0e1f4579aa6f1f689b525580ddf..33bc24e4cceb1db8863a7cf8550dfa1ae7135e7c 100644 (file)
@@ -128,7 +128,8 @@ public class CaddxBridgeHandler extends BaseBridgeHandler implements CaddxPanelL
                 protocol);
 
         try {
-            communicator = new CaddxCommunicator(portManager, protocol, serialPortName, baudRate);
+            communicator = new CaddxCommunicator(getThing().getUID().getAsString(), portManager, protocol,
+                    serialPortName, baudRate);
         } catch (IOException | TooManyListenersException | UnsupportedCommOperationException | PortInUseException e) {
             updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.COMMUNICATION_ERROR,
                     "Communication cannot be initialized. " + e.toString());
index 79b8f58ac602006ec5b2c18f7731edfe81b8f28d..f7baf4c94ab090d089baa91914bc7a9f03b9ff7c 100644 (file)
@@ -98,7 +98,8 @@ public class EnvisalinkBridgeHandler extends DSCAlarmBaseBridgeHandler {
             tcpOutput = new OutputStreamWriter(tcpSocket.getOutputStream(), "US-ASCII");
             tcpInput = new BufferedReader(new InputStreamReader(tcpSocket.getInputStream()));
 
-            Thread tcpListener = new Thread(new TCPListener());
+            Thread tcpListener = new Thread(new TCPListener(), "OH-binding-" + getThing().getUID() + "-tcplistener");
+            tcpListener.setDaemon(true);
             tcpListener.start();
 
             setConnected(true);
index 404d16c0c596a27fd58315212ff866bdd6ec5191..5108ff9f5bab959c8a1e2675238f861da6ed6f9d 100644 (file)
@@ -105,7 +105,8 @@ public class TCPServerBridgeHandler extends DSCAlarmBaseBridgeHandler {
             tcpOutput = new OutputStreamWriter(tcpSocket.getOutputStream(), "US-ASCII");
             tcpInput = new BufferedReader(new InputStreamReader(tcpSocket.getInputStream()));
 
-            Thread tcpListener = new Thread(new TCPListener());
+            Thread tcpListener = new Thread(new TCPListener(), "OH-binding-" + getThing().getUID() + "-tcplistener");
+            tcpListener.setDaemon(true);
             tcpListener.start();
 
             setConnected(true);
index 471023bb4a43134f5e8f47a080da85e0ad94b623..4ca2663a4cf1d5036399235408788c0d6b4274b7 100644 (file)
@@ -37,6 +37,7 @@ import java.util.stream.Stream;
 
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.eclipse.jdt.annotation.Nullable;
+import org.openhab.binding.harmonyhub.internal.HarmonyHubBindingConstants;
 import org.openhab.binding.harmonyhub.internal.handler.HarmonyHubHandler;
 import org.openhab.core.config.discovery.AbstractDiscoveryService;
 import org.openhab.core.config.discovery.DiscoveryResultBuilder;
@@ -222,7 +223,9 @@ public class HarmonyHubDiscoveryService extends AbstractDiscoveryService {
 
         public void start() {
             running = true;
-            Thread localThread = new Thread(this::run, "HarmonyDiscoveryServer(tcp/" + getPort() + ")");
+            Thread localThread = new Thread(this::run,
+                    "OH-binding-" + HarmonyHubBindingConstants.BINDING_ID + "discoveryServer");
+            localThread.setDaemon(true);
             localThread.start();
         }
 
index 549f9efae3580a8e733e2460eb1ceab10c679bd5..444f4300c4402c1fb161decb792a2bc8b0a42070 100644 (file)
@@ -249,7 +249,7 @@ public abstract class AbstractHomematicGateway implements RpcEventListener, Home
         for (TransferMode mode : availableInterfaces.values()) {
             if (!rpcServers.containsKey(mode)) {
                 RpcServer rpcServer = mode == TransferMode.XML_RPC ? new XmlRpcServer(this, config)
-                        : new BinRpcServer(this, config);
+                        : new BinRpcServer(this, config, id);
                 rpcServers.put(mode, rpcServer);
                 rpcServer.start();
             }
index 0f671110b5b09627b4af50e7bf97f4524ad2e207..97504836486a8e325297d133965819ded746709e 100644 (file)
@@ -14,6 +14,7 @@ package org.openhab.binding.homematic.internal.communicator.server;
 
 import java.io.IOException;
 
+import org.openhab.binding.homematic.internal.HomematicBindingConstants;
 import org.openhab.binding.homematic.internal.common.HomematicConfig;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -28,12 +29,14 @@ public class BinRpcServer implements RpcServer {
 
     private Thread networkServiceThread;
     private BinRpcNetworkService networkService;
-    private HomematicConfig config;
-    private RpcEventListener listener;
+    private final HomematicConfig config;
+    private final RpcEventListener listener;
+    private final String id;
 
-    public BinRpcServer(RpcEventListener listener, HomematicConfig config) {
+    public BinRpcServer(RpcEventListener listener, HomematicConfig config, String id) {
         this.listener = listener;
         this.config = config;
+        this.id = id;
     }
 
     @Override
@@ -42,7 +45,8 @@ public class BinRpcServer implements RpcServer {
 
         networkService = new BinRpcNetworkService(listener, config);
         networkServiceThread = new Thread(networkService);
-        networkServiceThread.setName("HomematicRpcServer");
+        networkServiceThread
+                .setName("OH-binding-" + HomematicBindingConstants.THING_TYPE_BRIDGE + ":" + id + "-rpcServer");
         networkServiceThread.start();
     }
 
index c5d2039f8a2b60788b81ecc72f2409b6811c4e1c..89affd147534123f6220c7fa4406e2e6283c9af2 100644 (file)
@@ -19,6 +19,7 @@ import java.util.Queue;
 
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.eclipse.jdt.annotation.Nullable;
+import org.openhab.binding.insteon.internal.InsteonBindingConstants;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -52,7 +53,7 @@ public class RequestQueueManager {
 
     private void setParamsAndStart(@Nullable Thread thread) {
         if (thread != null) {
-            thread.setName("Insteon Request Queue Reader");
+            thread.setName("OH-binding-" + InsteonBindingConstants.BINDING_ID + "-requestQueueReader");
             thread.setDaemon(true);
             thread.start();
         }
index a17856ca893d32929c2c42f5defc1edebd7a4576..b314919eff02ce4a3b4c4517b510c7bedba4fa22 100644 (file)
@@ -19,6 +19,7 @@ import java.util.TreeSet;
 
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.eclipse.jdt.annotation.Nullable;
+import org.openhab.binding.insteon.internal.InsteonBindingConstants;
 import org.openhab.binding.insteon.internal.device.InsteonDevice;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -112,7 +113,7 @@ public class Poller {
 
     private void setParamsAndStart(@Nullable Thread thread) {
         if (thread != null) {
-            thread.setName("Insteon Poll Queue Reader");
+            thread.setName("OH-binding-" + InsteonBindingConstants.BINDING_ID + "-pollQueueReader");
             thread.setDaemon(true);
             thread.start();
         }
index e155402c34e86a1c37a8243563af60e213c17ff2..581737536c908d19824f6268ba442347f891e8fe 100644 (file)
@@ -192,7 +192,7 @@ public class Port {
 
     private void setParamsAndStart(@Nullable Thread thread, String type) {
         if (thread != null) {
-            thread.setName("Insteon " + logName + " " + type);
+            thread.setName("OH-binding-Insteon " + logName + " " + type);
             thread.setDaemon(true);
             thread.start();
         }
index d40b178bf3650c118ef3a6d19a26bbde10972206..fcbc60cccc0ba4c009d5e5ef2ca9381ba56448b9 100644 (file)
@@ -25,6 +25,7 @@ import java.util.Base64;
 
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.eclipse.jdt.annotation.Nullable;
+import org.openhab.binding.insteon.internal.InsteonBindingConstants;
 import org.openhab.binding.insteon.internal.driver.IOStream;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -102,7 +103,7 @@ public class HubIOStream extends IOStream implements Runnable {
 
     private void setParamsAndStart(@Nullable Thread thread) {
         if (thread != null) {
-            thread.setName("Insteon Hub Poller");
+            thread.setName("OH-binding-" + InsteonBindingConstants.BINDING_ID + "-hubPoller");
             thread.setDaemon(true);
             thread.start();
         }
index b3f7ece697eb51266ad1acebe67ef9a38ff2f46d..37620398891bdb6e5312728a5e19e221d329a6d5 100644 (file)
@@ -18,6 +18,7 @@ import java.util.Collections;
 import java.util.Set;
 
 import org.openhab.binding.keba.internal.handler.KeContactHandler;
+import org.openhab.binding.keba.internal.handler.KeContactTransceiver;
 import org.openhab.core.thing.Thing;
 import org.openhab.core.thing.ThingTypeUID;
 import org.openhab.core.thing.binding.BaseThingHandlerFactory;
@@ -36,6 +37,8 @@ public class KebaHandlerFactory extends BaseThingHandlerFactory {
 
     private static final Set<ThingTypeUID> SUPPORTED_THING_TYPES_UIDS = Collections.singleton(THING_TYPE_KECONTACTP20);
 
+    private final KeContactTransceiver transceiver = new KeContactTransceiver();
+
     @Override
     public boolean supportsThingType(ThingTypeUID thingTypeUID) {
         return SUPPORTED_THING_TYPES_UIDS.contains(thingTypeUID);
@@ -46,7 +49,7 @@ public class KebaHandlerFactory extends BaseThingHandlerFactory {
         ThingTypeUID thingTypeUID = thing.getThingTypeUID();
 
         if (thingTypeUID.equals(THING_TYPE_KECONTACTP20)) {
-            return new KeContactHandler(thing);
+            return new KeContactHandler(thing, transceiver);
         }
 
         return null;
index 78994fc47d807efd8adb6a324f3c8640369efa02..478c49bf9c24b09bc084cd01d9954c659b2878df 100644 (file)
@@ -74,10 +74,10 @@ public class KeContactHandler extends BaseThingHandler {
 
     private final Logger logger = LoggerFactory.getLogger(KeContactHandler.class);
 
-    protected JsonParser parser = new JsonParser();
+    protected final JsonParser parser = new JsonParser();
+    private final KeContactTransceiver transceiver;
 
     private ScheduledFuture<?> pollingJob;
-    private static KeContactTransceiver transceiver = new KeContactTransceiver();
     private ExpiringCacheMap<String, ByteBuffer> cache;
 
     private int maxPresetCurrent = 0;
@@ -87,8 +87,9 @@ public class KeContactHandler extends BaseThingHandler {
     private int lastState = -1; // trigger a report100 at startup
     private boolean isReport100needed = true;
 
-    public KeContactHandler(Thing thing) {
+    public KeContactHandler(Thing thing, KeContactTransceiver transceiver) {
         super(thing);
+        this.transceiver = transceiver;
     }
 
     @Override
@@ -106,7 +107,7 @@ public class KeContactHandler extends BaseThingHandler {
 
             if (pollingJob == null || pollingJob.isCancelled()) {
                 try {
-                    pollingJob = scheduler.scheduleWithFixedDelay(pollingRunnable, 0,
+                    pollingJob = scheduler.scheduleWithFixedDelay(this::pollingRunnable, 0,
                             ((BigDecimal) getConfig().get(POLLING_REFRESH_INTERVAL)).intValue(), TimeUnit.SECONDS);
                 } catch (Exception e) {
                     updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.NONE,
@@ -147,7 +148,7 @@ public class KeContactHandler extends BaseThingHandler {
         return super.getConfig();
     }
 
-    private Runnable pollingRunnable = () -> {
+    private void pollingRunnable() {
         try {
             long stamp = System.currentTimeMillis();
             if (!InetAddress.getByName(((String) getConfig().get(IP_ADDRESS))).isReachable(PING_TIME_OUT)) {
@@ -194,7 +195,7 @@ public class KeContactHandler extends BaseThingHandler {
         } catch (InterruptedException e) {
             logger.debug("Polling job has been interrupted for handler of thing '{}'.", getThing().getUID());
         }
-    };
+    }
 
     protected void onData(ByteBuffer byteBuffer) {
         String response = new String(byteBuffer.array(), 0, byteBuffer.limit());
index 0f30fb2d1e81b8af7e2af5c0e7d0652bcb104af0..c123190843cb18dd1d85849274af80a73f32547e 100644 (file)
@@ -45,7 +45,7 @@ import org.slf4j.LoggerFactory;
  * @author Karel Goderis - Initial contribution
  */
 
-class KeContactTransceiver {
+public class KeContactTransceiver {
 
     public static final int LISTENER_PORT_NUMBER = 7090;
     public static final int REMOTE_PORT_NUMBER = 7090;
@@ -74,7 +74,7 @@ class KeContactTransceiver {
                 selector = Selector.open();
 
                 if (transceiverThread == null) {
-                    transceiverThread = new Thread(transceiverRunnable, "openHAB-Keba-Transceiver");
+                    transceiverThread = new Thread(transceiverRunnable, "OH-binding-Keba-Transceiver");
                     transceiverThread.start();
                 }
 
index 2d9706ce434613560e5853a610b03a7c1334b7de..e05b6ed7dc0baefcf4e45e97e86ebbae9058e510 100644 (file)
@@ -27,11 +27,8 @@ class Utils {
     }
 
     static Thread backgroundThread(Runnable r, String type, @Nullable Thing thing) {
-        String name = "OH-binding-" + LinuxInputBindingConstants.BINDING_ID + "-" + type;
-        if (thing != null) {
-            name += "-" + thing.getUID();
-        }
-        Thread t = new Thread(r, name);
+        String id = thing == null ? LinuxInputBindingConstants.BINDING_ID : thing.getUID().getAsString();
+        Thread t = new Thread(r, "OH-binding-" + id + "-" + type);
         t.setDaemon(true);
         return t;
     }
index 9c4fb67dcd8ae4ae7cdc1d7dff7d33f2c890d940..48ca1d79f0248ac14c98e11169325c8cd6651605 100644 (file)
@@ -71,7 +71,7 @@ public class PrgBridgeHandler extends BaseBridgeHandler {
         }
 
         final PrgBridgeConfig config = getPrgBridgeConfig();
-        session = new SocketSession(config.getIpAddress(), 23);
+        session = new SocketSession(getThing().getUID().getAsString(), config.getIpAddress(), 23);
 
         protocolHandler = new PrgProtocolHandler(session, new PrgHandlerCallback() {
             @Override
index 4fd4e025a6d277ea36872f81359af4e90b16d8c0..ed3adf432c180612c8134d85277bbbae0ca987a5 100644 (file)
@@ -39,6 +39,10 @@ import org.slf4j.LoggerFactory;
 public class SocketSession {
     private final Logger logger = LoggerFactory.getLogger(SocketSession.class);
 
+    /**
+     * The uid of the calling thing
+     */
+    private final String uid;
     /**
      * The host/ip address to connect to
      */
@@ -87,10 +91,11 @@ public class SocketSession {
     /**
      * Creates the socket session from the given host and port
      *
+     * @param uid the thing uid of the calling thing
      * @param host a non-null, non-empty host/ip address
      * @param port the port number between 1 and 65535
      */
-    public SocketSession(String host, int port) {
+    public SocketSession(String uid, String host, int port) {
         if (host == null || host.trim().length() == 0) {
             throw new IllegalArgumentException("Host cannot be null or empty");
         }
@@ -98,6 +103,7 @@ public class SocketSession {
         if (port < 1 || port > 65535) {
             throw new IllegalArgumentException("Port must be between 1 and 65535");
         }
+        this.uid = uid;
         this.host = host;
         this.port = port;
     }
@@ -133,8 +139,8 @@ public class SocketSession {
         writer = new PrintStream(client.getOutputStream());
         reader = new BufferedReader(new InputStreamReader(client.getInputStream()));
 
-        new Thread(responseReader).start();
-        new Thread(dispatcher).start();
+        new Thread(responseReader, "OH-binding-" + uid + "-responseReader").start();
+        new Thread(dispatcher, "OH-binding-" + uid + "-dispatcher").start();
     }
 
     /**