/// /////////////////////////////////////////////////// public CSessionClient GetSessionClient(int nIdSession) { CSessionClientSurServeur sessionServeur = (CSessionClientSurServeur)m_listeSessions[nIdSession]; if (sessionServeur != null) { return(sessionServeur.SessionClient); } return(null); }
/// /////////////////////////////////////////////////// public static void CloseSession(CSessionClientSurServeur session) { CDonneeNotificationConnection donnee = new CDonneeNotificationConnection(session.IdSession, false); CEnvoyeurNotification.EnvoieNotifications(new IDonneeNotification[] { donnee }); lock (typeof(CLockerListeSessions)) { m_listeSessions.Remove(session.IdSession); } CSessionClient.OnCloseSessionServeur(session.IdSession); }
// Notify a handler that an object has been disconnected. public void DisconnectedObject(Object obj) { if (obj is CSessionClientSurServeur) { bool bConnected = false; CSessionClientSurServeur session = (CSessionClientSurServeur)obj; try { CSessionClientSurServeur sc = CGestionnaireSessions.GetSessionClientSurServeurStatic(session.IdSession) as CSessionClientSurServeur; if (CGestionnaireSessions.IsSessionOpenStatic(session.IdSession)) { // try { //Tente de contacter la session cliente bConnected = sc == null || sc.SessionClient.IsConnected; } catch { } if (!bConnected) { string strMessage = I.T("Auto disconnection session number @1|109", session.IdSession.ToString()) + I.T("\r\n|108") + I.T("Type|107") + session.TypeApplicationCliente.ToString(); strMessage += I.T("\r\n|108") + session.DescriptionApplicationCliente; try { strMessage += I.T("\r\n|108") + session.GetInfoUtilisateur().NomUtilisateur; } catch { } C2iEventLog.WriteErreur(strMessage); } } } catch {} if (!bConnected) { session.CloseSession(); } } }
/// /////////////////////////////////////////////////// public CResultAErreur OpenSession(CSessionClient sessionSurClient) { CResultAErreur result = CResultAErreur.True; result = CanOpenSession(sessionSurClient); if (result) { sessionSurClient.IdSession = m_nNumNextSession++; CSessionClientSurServeur sessionSurServeur = GetNewSessionSurServeur(sessionSurClient, result.Data); result.Data = null; if (sessionSurServeur == null) { result.EmpileErreur(I.T("Server session allocation impossible|105")); } else { sessionSurClient.SessionSurServeur = sessionSurServeur; lock (typeof(CLockerListeSessions)) { m_listeSessions[sessionSurClient.IdSession] = sessionSurServeur; } string strMessage = I.T("Session Connection number @1|106", sessionSurClient.IdSession.ToString()) + I.T("\r\n|108") + I.T("Type|107") + sessionSurClient.TypeApplicationCliente.ToString(); strMessage += I.T("\r\n|108") + sessionSurServeur.DescriptionApplicationCliente; try { strMessage += I.T("\r\n|108") + sessionSurClient.GetInfoUtilisateur().NomUtilisateur; } catch {} C2iEventLog.WriteInfo(strMessage, NiveauBavardage.VraiPiplette); CDonneeNotificationConnection donnee = new CDonneeNotificationConnection(sessionSurClient.IdSession, true); CEnvoyeurNotification.EnvoieNotifications(new IDonneeNotification[] { donnee }); } } return(result); }
/// /////////////////////////////////////////////////// public static void NettoieSessions(object state) { try { StringBuilder blInfo = new StringBuilder(); blInfo.Append("Sessions cleaning : " + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") + "\r\n"); foreach (DictionaryEntry entry in new ArrayList(m_listeSessions)) { try { int nIdSession = (int)entry.Key; blInfo.Append("Session "); blInfo.Append(nIdSession); CSessionClientSurServeur sessionServeur = (CSessionClientSurServeur)entry.Value; CSessionClient session = CSessionClient.GetSessionForIdSession(nIdSession); bool bIsConnected = false; try { bIsConnected = session.IsConnected; if (bIsConnected) { sessionServeur.DateHeureLastTestSessionClientSuccess = DateTime.Now; } } catch { blInfo.Append("/Disconnected from client/"); } if (session == null || !bIsConnected) { TimeSpan sp = DateTime.Now - sessionServeur.DateHeureLastTestSessionClientSuccess; if (sp.TotalMinutes > LifetimeServices.SponsorshipTimeout.Minutes) { blInfo.Append("/Closing/"); C2iEventLog.WriteInfo("Loose " + nIdSession + " Automatic disconnect", NiveauBavardage.PetiteCausette); try { sessionServeur.CloseSession(); } catch { CloseSession(sessionServeur); } blInfo.Append("/Closed/"); } } else { blInfo.Append("/active/"); } blInfo.Append(Environment.NewLine); } catch { blInfo.Append("ERROR \r\n"); } } C2iEventLog.WriteInfo(blInfo.ToString(), NiveauBavardage.VraiPiplette); } catch {} }
/// /////////////////////////////////////////////////// public static ISessionClientSurServeur GetSessionClientSurServeurStatic(int nIdSession) { CSessionClientSurServeur sessionServeur = (CSessionClientSurServeur)m_listeSessions[nIdSession]; return(sessionServeur); }
/// ////////////////////////////////////////////////////////////////////////// public static void Autoexec() { CSessionClientSurServeur.RegisterFournisseurTransactions(new CFournisseurTransactionsNotifications()); }