コード例 #1
0
 //--------------------------------------------------------------------
 /// <summary>
 /// Id session est null si on ne gère pas de transaction
 /// </summary>
 /// <param name="nIdSession"></param>
 /// <param name="strCleBaseDistante"></param>
 /// <param name="operation"></param>
 public void AddOperation(
     int?nIdSession,
     string strCleBaseDistante,
     IOperationSynchronisation operation)
 {
     lock (this)
     {
         if (nIdSession != null)
         {
             CTransactionSynchroniseur trans = CGestionnaireTransactionsSynchroniseur.GetInstance().GetServiceTransaction(nIdSession.Value) as CTransactionSynchroniseur;
             if (trans != null && trans.IsInTrans())
             {
                 trans.AddOperation(strCleBaseDistante, operation);
                 return;
             }
         }
         CDonneesSynchronisationBaseDistante donnee = null;
         if (!m_dicDonneesSynchro.TryGetValue(strCleBaseDistante, out donnee))
         {
             donnee = new CDonneesSynchronisationBaseDistante(strCleBaseDistante);
             m_dicDonneesSynchro[strCleBaseDistante] = donnee;
         }
         donnee.AddOperation(operation);
     }
 }
コード例 #2
0
        //--------------------------------------------------------------------
        public CResultAErreur TraiteNextDestination()
        {
            CResultAErreur result = CResultAErreur.True;
            CDonneesSynchronisationBaseDistante donneeSyncRetenue = null;

            lock (this)
            {
                DateTime?dtMin = null;
                foreach (KeyValuePair <string, CDonneesSynchronisationBaseDistante> kv in m_dicDonneesSynchro)
                {
                    if (kv.Value.Operations.Count() > 0)
                    {
                        if (dtMin == null || (kv.Value.LastDateSynchro != null && kv.Value.LastDateSynchro < dtMin))
                        {
                            donneeSyncRetenue = kv.Value;
                            dtMin             = kv.Value.LastDateSynchro;
                        }
                    }
                }
            }
            if (donneeSyncRetenue != null)
            {
                result = donneeSyncRetenue.DoOperations(m_nIdSession);
            }
            return(result);
        }
コード例 #3
0
        //--------------------------------------------------------------------
        public CResultAErreur TraiteAgent(string strCleAgent)
        {
            CResultAErreur result = CResultAErreur.True;
            CDonneesSynchronisationBaseDistante donnee = null;

            if (m_dicDonneesSynchro.TryGetValue(strCleAgent, out donnee))
            {
                return(donnee.DoOperations(m_nIdSession));
            }
            return(result);
        }
コード例 #4
0
 internal CResultAErreur IntegreOperations(CDonneesSynchronisationBaseDistante donnee)
 {
     lock (this)
     {
         foreach (IOperationSynchronisation operation in donnee.m_listeOperations)
         {
             m_listeOperations.Add(operation);
         }
     }
     return(CResultAErreur.True);
 }
コード例 #5
0
        //----------------------------------------------------------------------
        /// <summary>
        /// Intègre les opérations d'un synchroniseur
        /// </summary>
        /// <param name="synchroniseur"></param>
        /// <returns></returns>
        internal CResultAErreur IntegreOperations(CSynchroniseurBaseDistante synchroniseur)
        {
            CResultAErreur result = CResultAErreur.True;

            foreach (KeyValuePair <string, CDonneesSynchronisationBaseDistante> kv in synchroniseur.m_dicDonneesSynchro)
            {
                CDonneesSynchronisationBaseDistante donneeDeMoi = null;
                if (!m_dicDonneesSynchro.TryGetValue(kv.Key, out donneeDeMoi))
                {
                    donneeDeMoi = new CDonneesSynchronisationBaseDistante(kv.Value.CleDestination);
                    m_dicDonneesSynchro[kv.Key] = donneeDeMoi;
                }
                result = donneeDeMoi.IntegreOperations(kv.Value);
                if (!result)
                {
                    return(result);
                }
            }
            return(result);
        }