private void setLogPrefix(final String userName, final String deviceId, final IoSession session) {

    StringBuilder prefix = new StringBuilder();
    prefix.append("[").append(session.getRemoteAddress()).append("] ");
    prefix.append("[").append(getSessionId()).append("] ");
    prefix.append("[").append(deviceId).append("] ");
    prefix.append("[").append(userName != null ? userName : "").append("] ");
    session.setAttribute(SessionLog.PREFIX, prefix.toString());
    logger.setPrefix(prefix.toString());
  }
  /**
   * Creates a new instance of <CODE>SessionManager</CODE>
   *
   * <p>The authentication manager is retrieved from the CTPServerConfiguration using parameter
   * specifide in file config/com/funambol/ctp/server/authentication/AuthenticationManager.xml
   *
   * @param session The related IoSession
   * @param dispatcher The NotificationProvider where to subscribe for notification messages.
   */
  public SessionManager(IoSession session, NotificationProvider dispatcher) {
    this.session = session;
    this.dispatcher = dispatcher;
    this.sessionState = new StateConnected();
    this.sessionId = createSessionId();
    lastClientEventTime = System.currentTimeMillis();

    this.authenticationManager =
        CTPServerConfiguration.getCTPServerConfiguration().getAuthenticationManager();

    this.pendingNotificationManager =
        CTPServerConfiguration.getCTPServerConfiguration().getPendingNotificationManager();

    session.setAttribute(SessionLog.LOGGER, logger);

    String prefix = "[" + session.getRemoteAddress() + "] ";
    session.setAttribute(SessionLog.PREFIX, prefix);
    logger.setPrefix(prefix);
  }