/// <summary>
        /// Default constructor.
        /// </summary>
        /// <param name="sessionID">Session ID.</param>
        /// <param name="socket">Server connected socket.</param>
        /// <param name="bindInfo">BindInfo what accepted socket.</param>
        /// <param name="server">Reference to server.</param>
        public SocketServerSession(string sessionID,SocketEx socket,BindInfo bindInfo,SocketServer server)
        {
            m_SessionID = sessionID;
            m_pSocket   = socket;
            m_pBindInfo = bindInfo;
            m_pServer   = server;

            m_SessionStartTime = DateTime.Now;
        }
        private string m_UserName = ""; // Holds USER command value

        #endregion Fields

        #region Constructors

        /// <summary>
        /// Default constructor.
        /// </summary>
        /// <param name="sessionID">Session ID.</param>
        /// <param name="socket">Server connected socket.</param>
        /// <param name="bindInfo">BindInfo what accepted socket.</param>
        /// <param name="server">Reference to server.</param>
        internal POP3_Session(string sessionID,SocketEx socket,BindInfo bindInfo,POP3_Server server)
            : base(sessionID,socket,bindInfo,server)
        {
            m_pServer       = server;
            m_POP3_Messages = new POP3_MessageCollection();

            // Start session proccessing
            StartSession();
        }
 /// <summary>
 /// Initialize and start new session here. Session isn't added to session list automatically, 
 /// session must add itself to server session list by calling AddSession().
 /// </summary>
 /// <param name="socket">Connected client socket.</param>
 /// <param name="bindInfo">BindInfo what accepted socket.</param>
 protected override void InitNewSession(Socket socket,BindInfo bindInfo)
 {
     string   sessionID = Guid.NewGuid().ToString();
     SocketEx socketEx  = new SocketEx(socket);
     /*if(LogCommands){
         socketEx.Logger = new SocketLogger(socket,this.SessionLog);
         socketEx.Logger.SessionID = sessionID;
     }*/
     MonitoringServerSession session = new MonitoringServerSession(sessionID,socketEx,bindInfo,this);
 }
        private string m_Reverse_path = ""; // Holds sender's reverse path.

        #endregion Fields

        #region Constructors

        /// <summary>
        /// Default constructor.
        /// </summary>
        /// <param name="sessionID">Session ID.</param>
        /// <param name="socket">Server connected socket.</param>
        /// <param name="bindInfo">BindInfo what accepted socket.</param>
        /// <param name="server">Reference to server.</param>
        internal SMTP_Session(string sessionID,SocketEx socket,BindInfo bindInfo,SMTP_Server server)
            : base(sessionID,socket,bindInfo,server)
        {
            m_pServer      = server;
            m_BodyType     = BodyType.x7_bit;
            m_Forward_path = new Hashtable();
            m_CmdValidator = new SMTP_Cmd_Validator();

            // Start session proccessing
            StartSession();
        }
        private string m_UserName = ""; // Holds loggedIn UserName.

        #endregion Fields

        #region Constructors

        /// <summary>
        /// Default constructor.
        /// </summary>
        /// <param name="sessionID">Session ID.</param>
        /// <param name="socket">Server connected socket.</param>
        /// <param name="bindInfo">BindInfo what accepted socket.</param>
        /// <param name="server">Reference to server.</param>
        internal FTP_Session(string sessionID,SocketEx socket,BindInfo bindInfo,FTP_Server server)
            : base(sessionID,socket,bindInfo,server)
        {
            m_pServer = server;

            // Start session proccessing
            StartSession();
        }