/** stop serving a camera in case of exceptional event happens. */ @Override public void finishConnection(Exception e, String description, byte cameraID) { synchronized (mainForm.getSocketMutex()[Camera.ordinal()][cameraID]) { /** close IO streams and camera socket before finishin service of this manager thread. */ if (0 < cameraID && cameraID <= gateCount) { if (isConnected(socket)) { String msg = " ------Camera #" + cameraID + " disconnected"; addMessageLine(mainForm.getMessageTextArea(), msg); logParkingException(Level.INFO, e, description + msg); long closeTm = System.currentTimeMillis(); mainForm.getSockConnStat()[Camera.ordinal()][cameraID].recordSocketDisconnection(closeTm); if (DEBUG) { System.out.println("Camera #" + cameraID + " disconnected at: " + closeTm); } closeSocket(socket, "while socket closing during camera connection finishing"); socket = null; } } else { System.out.println("this never ever cameraID"); } } if (mainForm.getConnectDeviceTimer()[Camera.ordinal()][cameraID] == null) { System.out.println("this never ever happens"); } else { mainForm.getConnectDeviceTimer()[Camera.ordinal()][cameraID].reRunOnce(); // addMessageLine(mainForm.getMessageTextArea(), "M5'. Cam#" + cameraID + " conn' // resch'ed"); } }