/// <summary>
        /// Executes after listener accepted new connection.
        /// </summary>
        /// <param name="socket">New connection socket.</param>
        private static void ListenerService_OnConnectionAccepted(Socket socket)
        {
            if (socket != null && socket.Connected)
            {
                UserConnection userConnection = new UserConnection(socket);

                if (m_ActiveConnections.Count >= Settings.Default.LoginServiceMaxAwaitingUsersCount)
                {
                    userConnection.Send(LoginFailed.ToPacket(UserAuthenticationResponseType.ServerOverloaded));
                    CloseActiveConnection(userConnection);
                    return;
                }

                if (m_ActiveConnections.ContainsKey(userConnection.Session.ID))
                {
                    userConnection = null;
                    ListenerService_OnConnectionAccepted(socket);
                    return;
                }

                m_ActiveConnections.Add(userConnection.Session.ID, userConnection);

                userConnection.Send(InitializeConnection.ToPacket(userConnection.Session)); // say hello to client

                userConnection.BeginReceive();
            }
        }
        /// <summary>
        /// Executes after listener accepted new connection.
        /// </summary>
        /// <param name="socket">New connection socket.</param>
        private static void ListenerService_OnConnectionAccepted( Socket socket )
        {
            if ( socket != null && socket.Connected )
            {
                UserConnection userConnection = new UserConnection(socket);

                if ( m_ActiveConnections.Count >= Settings.Default.LoginServiceMaxAwaitingUsersCount )
                {
                    userConnection.Send(LoginFailed.ToPacket(UserAuthenticationResponseType.ServerOverloaded));
                    CloseActiveConnection(userConnection);
                    return;
                }

                if ( m_ActiveConnections.ContainsKey(userConnection.Session.ID) )
                {
                    userConnection = null;
                    ListenerService_OnConnectionAccepted(socket);
                    return;
                }

                m_ActiveConnections.Add(userConnection.Session.ID, userConnection);

                userConnection.Send(InitializeConnection.ToPacket(userConnection.Session)); // say hello to client

                userConnection.BeginReceive();
            }
        }