/// <summary>
        /// Called when [receive completed].
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="e">The <see cref="SocketAsyncEventArgs"/> instance containing the event data.</param>
        public void OnReceiveCompleted(object sender, SocketAsyncEventArgs e)
        {
            TCPSession tcpSession = e.UserToken as TCPSession;

            if (e.LastOperation == SocketAsyncOperation.Receive)
            {
                tcpSession.OnReceive();
                return;
            }
            else
            {
                tcpSession.OnDisconnect();
            }
        }