public static void AutoexecInit() { lock (typeof(CGestionnaireDonneesQowisio)) { if (m_bAutoexecDone) { return; } m_bAutoexecDone = true; } m_bTraitementEnCours = true; CTimosServeur.OnMajStructureBaseEvent += new EventHandler(CTimosServeur_OnMajStructureBaseEvent); string strAppData = AppDataPath; if (!Directory.Exists(strAppData)) { Directory.CreateDirectory(strAppData); } C2iEventLog.WriteInfo(strAppData); // Récupère le nom du dernier fichier traité CDataBaseRegistrePourClient registreClient = new CDataBaseRegistrePourClient(0); CContexteDonneeServeur.AddTraitementAvantSauvegarde(new TraitementSauvegardeExterne(TraitementAvantSauvegardeExterne)); }
//-------------------------------------------------------------------------------------- public static CDictionnaireTypeEditeTypeFormPrefere GetInstance() { if (m_dictionnaire == null) { // Lit le registre CDataBaseRegistrePourClient registre = new CDataBaseRegistrePourClient(CSc2iWin32DataClient.ContexteCourant.IdSession); if (registre != null) { byte[] data = registre.GetValeurBlob(c_cleRegistre); if (data != null) { MemoryStream flux = new MemoryStream(data); BinaryReader lecteur = new BinaryReader(flux); CSerializerReadBinaire serializer = new CSerializerReadBinaire(lecteur); CResultAErreur result = serializer.TraiteObject <CDictionnaireTypeEditeTypeFormPrefere>(ref m_dictionnaire); lecteur.Close(); flux.Close(); if (result) { return(m_dictionnaire); } } } m_dictionnaire = new CDictionnaireTypeEditeTypeFormPrefere(); } return(m_dictionnaire); }
public static int GetIdSymboleParDefaut(Type typeElement, CContexteDonnee contexte) { string strCle = GetCleRegistreSymboleDefaut(typeElement); CDataBaseRegistrePourClient reg = new CDataBaseRegistrePourClient(contexte.IdSession); int nId = (int)reg.GetValeurLong(strCle, -1); return(nId); }
public static void SetSymboleParDefaut(Type typeElement, CSymbole symbole) { if (symbole == null) { return; } string strCle = GetCleRegistreSymboleDefaut(typeElement); CDataBaseRegistrePourClient reg = new CDataBaseRegistrePourClient(symbole.ContexteDonnee.IdSession); reg.SetValeur(strCle, symbole.Id.ToString()); }
public static EOptionControleCoordonnees GetOptionType(int nIdSession, Type tpObjet) { if (tpObjet == typeof(CTypeSite)) { tpObjet = typeof(CSite); } if (tpObjet == typeof(CTypeEquipement)) { tpObjet = typeof(CEquipement); } long nVal = new CDataBaseRegistrePourClient(nIdSession).GetValeurLong("COORD_" + tpObjet.ToString(), (long)EOptionControleCoordonnees.IgnorerLesFilsSansCoordonnees); return((EOptionControleCoordonnees)nVal); }
//-------------------------------------------------------------------------------------- public static CResultAErreur SaveInstance() { CResultAErreur result = CResultAErreur.True; if (m_dictionnaire != null) { MemoryStream flux = new MemoryStream(); BinaryWriter writer = new BinaryWriter(flux); CSerializerSaveBinaire serilaizer = new CSerializerSaveBinaire(writer); result = serilaizer.TraiteObject <CDictionnaireTypeEditeTypeFormPrefere>(ref m_dictionnaire); if (result) { CDataBaseRegistrePourClient registre = new CDataBaseRegistrePourClient(CSc2iWin32DataClient.ContexteCourant.IdSession); result = registre.SetValeurBlob(c_cleRegistre, flux.ToArray()); } writer.Close(); flux.Close(); } return(result); }
//------------------------------------------------------ private static void SetSetupForWindow(CSessionClient session, Form form, CSetupVisibiliteControles setup) { string strKey = c_racineCleRegistre + form.GetType().ToString(); CDataBaseRegistrePourClient reg = new CDataBaseRegistrePourClient(session.IdSession); if (setup == null) { reg.SetValeurBlob(strKey, new byte[0]); } else { MemoryStream stream = new MemoryStream(); BinaryWriter writer = new BinaryWriter(stream); CSerializerSaveBinaire ser = new CSerializerSaveBinaire(writer); CResultAErreur result = setup.Serialize(ser); stream.Flush(); reg.SetValeurBlob(strKey, stream.GetBuffer()); writer.Close(); stream.Close(); stream.Dispose(); } }
//------------------------------------------------------ private static CSetupVisibiliteControles GetSetupForWindow(CSessionClient session, Form frm) { CSetupVisibiliteControles setup = new CSetupVisibiliteControles(); string strKey = c_racineCleRegistre + frm.GetType().ToString(); //cherche le setup dans le registre CDataBaseRegistrePourClient reg = new CDataBaseRegistrePourClient(session.IdSession); byte[] bts = reg.GetValeurBlob(strKey); if (bts != null) { MemoryStream stream = new MemoryStream(bts); BinaryReader reader = new BinaryReader(stream); CSerializerReadBinaire ser = new CSerializerReadBinaire(reader); CResultAErreur result = setup.Serialize(ser); if (!result) { setup = new CSetupVisibiliteControles(); } reader.Close(); stream.Close(); stream.Dispose(); } return(setup); }
//---------------------------------------------------------------------------------- /// <summary> /// /// </summary> /// <param name="target"></param> public static void OnTimerTraitement(object target) { CResultAErreur result = CResultAErreur.True; TimeSpan ts = DateTime.Now - m_lastDateDebutTraitementShort; if (m_bTraitementEnCours) { if (ts.TotalMinutes < 5) { return; } else { C2iEventLog.WriteErreur("CCamusatQowisioDataServeur : data processing >= 5 minutes"); return; } } m_bTraitementEnCours = true; m_lastDateDebutTraitementShort = DateTime.Now; // Determine le mode du traitement SHORT/MEDIUM/FULL EModeTraitment modeTraitement = EModeTraitment.SHORT; ts = DateTime.Now - m_lastDateDebutTraitementMedium; if (ts.TotalMilliseconds >= c_nDelaiTraitementMedium) { modeTraitement = modeTraitement | EModeTraitment.MEDIUM; m_lastDateDebutTraitementMedium = DateTime.Now; } ts = DateTime.Now - m_lastDateDebutTraitementMedium; if (ts.TotalMilliseconds >= c_nDelaiTraitementFull) { modeTraitement = modeTraitement | EModeTraitment.FULL; m_lastDateDebutTraitementFull = DateTime.Now; } try { System.Threading.Thread.CurrentThread.Priority = System.Threading.ThreadPriority.Lowest; try { m_sessionClient = CSessionClient.CreateInstance(); result = m_sessionClient.OpenSession(new CAuthentificationSessionServer(), "Qowisio XML data processing", ETypeApplicationCliente.Service); if (!result) { C2iEventLog.WriteErreur("Working session openning error for CCamusatQowisioDataServeur"); return; } try { //Récupère les fichiers FTP string strFTPserver = CCamusatQowisioServeurRegistre.FTPServer; string strFTPuser = CCamusatQowisioServeurRegistre.FTPUser; string strFTPpassword = CCamusatQowisioServeurRegistre.FTPPassword; int nFTPport = CCamusatQowisioServeurRegistre.FTPPort; string strIncomingDirectory = CCamusatQowisioServeurRegistre.FTPIncomingDirectory; List <string> listeFichiersATraiter = new List <string>(); ArrayList listFiles = null; string strLastFile = new CDataBaseRegistrePourClient(m_sessionClient.IdSession).GetValeurString(c_strCleDernierFichierTraité, ""); Sftp ftp = new Sftp(strFTPserver, strFTPuser, strFTPpassword); try { ftp.Connect(); /* Open the FTP connection */ listFiles = ftp.GetFileList(strIncomingDirectory); listFiles.Sort(); listFiles.Reverse(); /* * // constitue la liste des fichiers à traiter * listFiles.AddRange(ftp.GetFiles()); * listFiles.Sort(new CFtpFileInfoComparer()); * listFiles.Reverse();*/ foreach (string strFtpFile in listFiles) { if (strFtpFile.CompareTo(strLastFile) <= 0) { break; } string strWorkFile = WorkDir + "\\" + strFtpFile; if (strFtpFile.ToUpper().EndsWith("XML")) { if (!File.Exists(strWorkFile)) { ftp.Get(strIncomingDirectory + "/" + strFtpFile, strWorkFile); //ftp.GetFile(fileInfo.Name, strWorkFile, false); /* download /incoming/file.txt as file.txt to current executing directory, overwrite if it exists */ //ftp.RemoveFile(fileInfo.Name); } listeFichiersATraiter.Insert(0, strFtpFile); } } if (listeFichiersATraiter.Count > 0) { new CDataBaseRegistrePourClient(m_sessionClient.IdSession).SetValeur(c_strCleDernierFichierTraité, listeFichiersATraiter[listeFichiersATraiter.Count - 1]); } ftp.Close(); } catch (Exception ex) { C2iEventLog.WriteErreur("CCamusatQowisioDataServeur error openning FTP connection: " + ex.Message); } finally { ftp.Close(); } // Traite la liste des fichiers à traiter using (CContexteDonnee contexte = new CContexteDonnee(m_sessionClient.IdSession, true, false)) { List <string> lstFichiersWork = new List <string>(Directory.GetFiles(WorkDir, "*.xml")); lstFichiersWork.Sort(); //CCamusatQowisioDataServeur serveur = new CCamusatQowisioDataServeur(m_sessionClient.IdSession); foreach (string strWorkFile in lstFichiersWork) { try { string strNomFichier = Path.GetFileName(strWorkFile); // Traitement d'un fichier XML result = TraiteFichierQowisio(strWorkFile, contexte, modeTraitement); string strArchive = DoneDir + "\\" + strNomFichier; if (result) { MoveSafely(strWorkFile, ref strArchive); } else { strArchive = ErrorDir + "\\" + strNomFichier; MoveSafely(strWorkFile, ref strArchive); FileStream stream = new FileStream(strArchive + ".Err", FileMode.CreateNew, FileAccess.Write); StreamWriter writer = new StreamWriter(stream); writer.Write(result.MessageErreur); writer.Close(); stream.Close(); } } catch (Exception e) { C2iEventLog.WriteErreur("CCamusatQowisioDataServeur error while processing file : " + strWorkFile + " - " + e.Message); } } } } catch (Exception ex) { C2iEventLog.WriteErreur("CCamusatQowisioDataServeur error processing files : " + ex.Message); } finally { try { m_sessionClient.CloseSession(); } catch { } } } catch (Exception e) { C2iEventLog.WriteErreur("CCamusatQowisioDataServeur error in OnTimerTraitement : " + e.Message); } } catch (Exception ex) { C2iEventLog.WriteErreur("CCamusatQowisioDataServeur error in OnTimerTraitement : " + ex.Message); } finally { m_bTraitementEnCours = false; } }
/// /////////////////////////////////////////////////////////// public static CResultAErreur InitClientTimos( string strServeurUrl, int nTcpChannel, string strBindTo, IIndicateurProgression indicateurProgression) { CResultAErreur result = CResultAErreur.True; try { AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal); //SUPPRIMé journal d'évenements: sur les postes clients qui ne sont pas autorisés //à créer un journal d'évenements, ça bloque, et comme ce n'est pas //très important sur un poste client, il n'y a plus //de journal d'évenements TIMOS sur les postes clients. //C2iEventLog.Init("", "Client Timos", NiveauBavardage.VraiPiplette); m_strUrlServeurMain = strServeurUrl; m_nPortServeur = nTcpChannel; result = CSC2iMultitiersClient.Init(m_nPortServeur, m_strUrlServeurMain, strBindTo); LifetimeServices.LeaseTime = new TimeSpan(0, 5, 0); LifetimeServices.LeaseManagerPollTime = new TimeSpan(0, 5, 0); LifetimeServices.SponsorshipTimeout = new TimeSpan(0, 3, 0); LifetimeServices.RenewOnCallTime = new TimeSpan(0, 8, 0); /*LifetimeServices.LeaseTime = new TimeSpan(0, 0, 3); * LifetimeServices.LeaseManagerPollTime = new TimeSpan(0, 0, 10); * LifetimeServices.SponsorshipTimeout = new TimeSpan(0, 0, 10); * LifetimeServices.RenewOnCallTime = new TimeSpan(0, 0, 5);*/ /*if ( !result ) * { * //On ne parvient pas à contacter le serveur primaire, s'adresse au serveur secondaire * result = CSC2iMultitiersClient.Init ( * m_nPortServeur, * m_strUrlServeurSecondaire); * if ( result ) * CSessionClient.AfterOpenSession += new SessionEventHandler(AfterOpenSessionModeDeconnecte); * } * else * { * if ( bAvecSynchronisation && m_strUrlServeurSecondaire != "") * { * //On a contacté le serveur primaire, tente une synchronisation * result = SynchroniseSecondaireToMain( indicateurProgression ); * if ( !result ) * return result; * CSessionClient.BeforeClosingSession += new SessionEventHandler(BeforeCloseSessionModeConnecte); * } * }*/ if (!result) { return(result); } C2iSponsor.EnableSecurite(); // System.Runtime.Remoting.RemotingConfiguration.Configure (strFichierConfig); // sc2i.multitiers.client.C2iFactory.InitFromFile(strFichierConfig); AppDomain.CurrentDomain.Load("sc2i.data.client"); AppDomain.CurrentDomain.Load("sc2i.data.dynamic"); AppDomain.CurrentDomain.Load("timos.data"); AppDomain.CurrentDomain.Load("sc2i.process"); AppDomain.CurrentDomain.Load("sc2i.documents"); AppDomain.CurrentDomain.Load("futurocom.sig"); AppDomain.CurrentDomain.Load("data.hotel.client"); #region Chargement des plugins CGestionnairePlugins.InitPlugins(AppDomain.CurrentDomain.BaseDirectory, "plg"); // Initialilsation des plugins à partir de TIMOS_REGISTRY CDataBaseRegistrePourClient registre = new CDataBaseRegistrePourClient(0); string strFUT_CLT = registre.GetValeurString("FUT_CLT", ""); if (strFUT_CLT.Trim() != string.Empty) { List <string> listPluginFiles = new List <string>(); foreach (string strNomPlg in strFUT_CLT.Split(';')) { string strTmp = AppDomain.CurrentDomain.BaseDirectory + strNomPlg; if (File.Exists(strTmp)) { listPluginFiles.Add(strTmp); } } CGestionnairePlugins.LoadPlugins(listPluginFiles.ToArray()); } #endregion foreach (Assembly ass in AppDomain.CurrentDomain.GetAssemblies()) { CContexteDonnee.AddAssembly(ass); } AppDomain.CurrentDomain.AssemblyLoad += new AssemblyLoadEventHandler(OnLoadAssembly); CGestionnaireObjetsAttachesASession.OnAttacheObjet += new LinkObjectEventHandler(OnAttacheObjectASession); CAutoexecuteurClasses.RunAllAutoexecs(); CVersionDonneesObjet.EnableJournalisation = true; // Création d'une Configuration SNMP par défaut // Redirige tout vers le Serveur Timos (entant que Proxy par défaut) CSnmpProxyConfiguration configurationDefaut = new CSnmpProxyConfiguration(); CPlageIP plageToutes = new CPlageIP("255.255.255.255", 32); CSnmpProxy proxyDefaut = new CSnmpProxy(configurationDefaut.Database); proxyDefaut.CreateNew(); string strIp = strServeurUrl.Substring(strServeurUrl.IndexOf("//") + 2); string strPort = strIp.Substring(strIp.IndexOf(':') + 1); strIp = strIp.Substring(0, strIp.IndexOf(':')); try { proxyDefaut.AdresseIP = new IP(strIp).ToIPAddress(); } catch { try { IPHostEntry entry = Dns.GetHostEntry(strIp); if (entry != null) { foreach (IPAddress adr in entry.AddressList) { //Cherche une IP V4 dans les paramètres string strIpTest = adr.ToString(); Regex ex = new Regex(@"\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b"); if (ex.IsMatch(strIpTest)) { proxyDefaut.AdresseIP = adr; break; } } } } catch { } } proxyDefaut.Port = Int32.Parse(strPort); proxyDefaut.AddPlage(plageToutes); CDataHotelClient.InitForUseProxy(m_strUrlServeurMain); CSnmpProxyConfiguration.SetDefaultInstance(configurationDefaut); CSnmpConnexion.ToutPasserParDesProxies = true; } catch (ReflectionTypeLoadException loadex) { result.EmpileErreur(new CErreurException(loadex)); StringBuilder bl = new StringBuilder(); foreach (Exception exSub in loadex.LoaderExceptions) { bl.AppendLine(exSub.Message); FileNotFoundException exFileNotFound = exSub as FileNotFoundException; if (exFileNotFound != null && !string.IsNullOrEmpty(exFileNotFound.FusionLog)) { bl.AppendLine("Not found : " + exFileNotFound.FusionLog); } } result.EmpileErreur(bl.ToString()); } catch (Exception e) { StringBuilder bl = new StringBuilder(); ReflectionTypeLoadException lex = e as System.Reflection.ReflectionTypeLoadException; if (lex != null) { foreach (Exception ee in lex.LoaderExceptions) { bl.Append(ee.Message.ToString()); bl.Append("\r\n"); } } else { bl.Append(e.Message.ToString()); } result.EmpileErreur(bl.ToString()); } return(result); }