예제 #1
0
        ///////////////////////////////////////////////
        public CResultAErreur OpenSession(IAuthentificationSession authentification, string strDescriptionApplication, ETypeApplicationCliente typeApplication)
        {
            CResultAErreur        result       = CResultAErreur.True;
            IGestionnaireSessions gestionnaire = null;

            try
            {
                //Ne pas utiliser GestionnaireSessions car on a besoin du type de gestionnaire
                //Si l'appli utilise plusieurs gestionnaires de sessions
                gestionnaire = (IGestionnaireSessions)C2iFactory.GetNewObject(m_typeGestionnaireSessions);
            }
            catch (Exception e)
            {
                result.EmpileErreur(new CErreurException(e));
                result.EmpileErreur(I.T("Error during the allowance of sessions manager|107"));
                return(result);
            }

            m_authentification = authentification;
            m_strDescription   = strDescriptionApplication;
            m_typeApplication  = typeApplication;
            try
            {
                result = gestionnaire.OpenSession(this);
                if (result)
                {
                    m_tableSessionParId[IdSession]    = this;
                    m_tableSessionsLocales[IdSession] = true;
                    if (AfterOpenSession != null)
                    {
                        AfterOpenSession(this);
                    }
                    if (m_nFirstSessionOuverte == -1)
                    {
                        m_nFirstSessionOuverte = IdSession;
                    }
                    GetDataThread(m_bUseSessionUtilisateurData).PushIdSession(IdSession);
                    m_bIsOpen = true;
                }
            }
            catch (Exception e)
            {
                result.EmpileErreur(new CErreurException(e));
                result.EmpileErreur(I.T("Error while opening session|108"));
                return(result);
            }
            return(result);
        }
예제 #2
0
        public bool CloseSession()
        {
            CSessionClient session = CSessionClient.GetSessionForIdSession(IdSession);

            if (session != null)
            {
                try
                {
                    session.CloseSession();
                    return(true);
                }
                catch
                {
                    try
                    {
                        IGestionnaireSessions    gestionnaire      = (IGestionnaireSessions)C2iFactory.GetNewObject(typeof(IGestionnaireSessions));
                        ISessionClientSurServeur sessionSurServeur = gestionnaire.GetSessionClientSurServeur(IdSession);
                        sessionSurServeur.CloseSession();
                        return(true);
                    }
                    catch (Exception)
                    {
                        return(false);
                    }
                }
            }
            return(false);
        }