예제 #1
0
  /** 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");
    }
  }