Example #1
0
 public COperationSynchronisationSurAgentSynchronisation(
     Type typeAgentSynchro,
     string strParametresAgentSynchro,
     EOperationSynchronisationSurAgentSynchronisation operation,
     string strIdElementASynchroniser)
 {
     m_typeAgent = typeAgentSynchro;
     m_strParametresAgentSynchro = strParametresAgentSynchro;
     m_operation = operation;
     m_strIdElementASynchroniser = strIdElementASynchroniser;
 }
        //---------------------------------------------------------------------------
        public CResultAErreur TraitementApresSauvegarde(CContexteDonnee contexte)
        {
            CResultAErreur result = CResultAErreur.True;
            DataTable      table  = contexte.Tables[GetNomTable()];

            if (table == null)
            {
                return(result);
            }
            HashSet <DataRow> rowsToSend = table.ExtendedProperties[GetType()] as HashSet <DataRow>;

            if (rowsToSend == null)
            {
                return(result);
            }
            CListeObjetsDonnees lstServiceMediation = new CListeObjetsDonnees(contexte, typeof(CSnmpProxyInDb));

            HashSet <string> myIps = new HashSet <string>();

            System.Net.IPHostEntry moiMeme = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName());
            foreach (IPAddress adresse in moiMeme.AddressList)
            {
                myIps.Add(adresse.ToString());
            }

            foreach (CSnmpProxyInDb proxy in lstServiceMediation.ToArrayList())
            {
                string strParametresAgent = proxy.AdresseIp;
                foreach (DataRow row in rowsToSend)
                {
                    if (DoitMettreAJour(proxy, row))
                    {
                        EOperationSynchronisationSurAgentSynchronisation typeOperation = EOperationSynchronisationSurAgentSynchronisation.CreateOrUpdate;
                        if (row.RowState == DataRowState.Deleted)
                        {
                            typeOperation = EOperationSynchronisationSurAgentSynchronisation.Delete;
                        }
                        string strId = row[ChampIdDeTypeSynchronise,
                                           row.RowState == DataRowState.Deleted ? DataRowVersion.Original : DataRowVersion.Current].ToString();
                        IOperationSynchronisation operation = new COperationSynchronisationSurAgentSynchronisation(
                            GetType(),
                            strParametresAgent,
                            typeOperation,
                            strId);
                        if (myIps.Contains(proxy.AdresseIp))
                        {
                            Init(proxy.AdresseIp);
                            result = DoOperation(operation, contexte);
                            if (!result)
                            {
                                return(result);
                            }
                        }
                        else
                        {
                            CSynchroniseurBaseDistante.DefaultInstance.AddOperation(contexte.IdSession, proxy.CleBaseDistante,
                                                                                    operation);
                        }
                    }
                }
            }
            table.ExtendedProperties.Remove(GetType());
            return(result);
        }