docs: public synchronized void close() throws IOException {
          if(getStatus().equals(ConnectionStatus.CLOSED)){
              return ;
          }
          if (LOGGER.isDebugEnabled()) {
              LOGGER.debug("Closing client for session: 0x"
                        + getSessionId());
          }
          connectRun.set(false);
  
          try{
              clientSocket.cleanup();
          }catch(Exception e){
              LOGGER.warn("Close the WSDirectorySocket get error.", e);
          }
  
          try {
              setStatus(ConnectionStatus.CLOSED);
              sendCloseSession();
              closeSession();
              eventThread.queueEventOfDeath();
          } catch (ServiceException e) {
              LOGGER.warn("Execute the CloseSession Protocol failed when close", e);
          }
      }