Esempio n. 1
0
 private void StartRegisterPendingEvents(ISyncDatabase db)
 {
     if (db is ISyncDatabaseRemote)
     {
         (db as ISyncDatabaseRemote).StartRegisterPendingEvents();
     }
 }
Esempio n. 2
0
 private void StopRegisterPendingEvents(ISyncDatabase db)
 {
     ProcessPendingLogMessages(db);
     if (db is ISyncDatabaseRemote)
     {
         (db as ISyncDatabaseRemote).StopRegisterPendingEvents();
     }
 }
Esempio n. 3
0
        public FSDatabaseTest()
        {
            this.rootDir = Support.Helpers.DBCache;

            //Esty Proxy
            this.etsyAPI = new EtsyAPIProxy(this.baseURL, Support.Helpers.EtsyAPIKey);

            //Database Proxy
            this.syncDatabase = new SyncDatabaseFS(rootDir);
        }
Esempio n. 4
0
        // - - - - - - - - - - - - - - - - - - - - - - - - - - -

        private void ExecuteSession(ISyncDatabase local, ISyncDatabase remote, SyncLink link, SyncLinkFilterList Filters)
        {
            log.InfoFormat("=== выполняется синхронизация", local.Name, remote.Name);
            // запуск сеанса
            local.StartSession(SessionMode.Read);

            // подготовка реплик
            SyncLogReplicaInfo replicaInfo = local.SourcePrepare(link);

            replicaLogItemsCount = replicaInfo.LogCount;

            if (replicaInfo.LogCount > 1)
            {
                SyncLogReplica replica = local.SourceGetNextReplica(replicaInfo, SourcePrepareOptions.None, Filters);

                remote.StartSession(SessionMode.Write);
                OnStageCompleted();
                SyncReplicaProcessResult result = remote.TargetProcessReplica(replica, TargetProcessOptions.None);
                OnStageCompleted();
                if (result.Success)
                {
                    remote.EndSession(true);
                    OnStageCompleted();
                    local.SourceCommitReplica(replicaInfo);
                }
                else
                {
                    log.ErrorFormat("обработка реплики прошла неудачно (возможно были ошибки) - транзакция не подтверджается");
                    jnl.Success = false;
                    remote.EndSession(false);
                    OnStageCompleted();
                    local.EndSession(false);
                    return;
                }
            }
            else
            {
                log.InfoFormat("нет данных журнала синхронизации", local.Name, remote.Name);
                remote.EndSession(true);
                OnStageCompleted();
            }

            local.EndSession(true);

            string local_messages  = local.GetLogMessages();
            string remote_messages = remote.GetLogMessages();

            logMessages.AppendLine("--- BEGIN LOCAL LOG MESSAGES ------------------------------------------------");
            logMessages.Append(local_messages);
            logMessages.AppendLine("--- END LOCAL LOG MESSAGES   ------------------------------------------------");

            logMessages.AppendLine("--- BEGIN REMOTE LOG MESSAGES -----------------------------------------------");
            logMessages.Append(remote_messages);
            logMessages.AppendLine("--- END REMOTE LOG MESSAGES   -----------------------------------------------");
        }
Esempio n. 5
0
        public InventoryAnalysisTests()
        {
            this.rootDir    = Support.Helpers.DBCache;
            this.etsyapikey = Support.Helpers.EtsyAPIKey;

            //Esty Proxy
            this.etsyAPI = new EtsyAPIProxy(this.baseURL, this.etsyapikey);

            //Database Proxy
            this.syncDatabase = new SyncDatabaseFS(rootDir);
        }
Esempio n. 6
0
 private void ProcessPendingLogMessages(ISyncDatabase db)
 {
     if (db is ISyncDatabaseRemote)
     {
         LogEventList list = (db as ISyncDatabaseRemote).GetPendingLoggingEvents();
         if (list != null)
         {
             foreach (LogEvent evt in list)
             {
                 log.Logger.Log(evt.GetLoggingEvent());
             }
         }
     }
 }
Esempio n. 7
0
        public InventoryTrackingControllerTests()
        {
            this.estyapikey = Support.Helpers.EtsyAPIKey;

            this.rootDir = Support.Helpers.DBCache;

            //Esty Proxy
            this.etsyAPI = new EtsyAPIProxy(this.baseURL, this.estyapikey);
            //Database Proxy
            this.syncDatabase = new SyncDatabaseFS(rootDir);

            //Analytic Generator
            InventoryAnalytics ia = new InventoryAnalytics(this.syncDatabase, this.etsyAPI);

            this.syncController = new SyncController(ia);
        }
Esempio n. 8
0
        // - - - - - - - - - - - - - - - - - - - - - - - - - -

        public void Initialize(string databaseName)
        {
            ConfigConnection conn = svc.Config.Connections.Find(databaseName);

            if (conn == null)
            {
                throw new ArgumentException(string.Format("Не найдено подключение к базе данных: {0}", databaseName), "databaseName");
            }
            if (!(conn is ConfigDatabase))
            {
                throw new ArgumentException(string.Format("Указанное соединение не является соединением к БД: {0}", databaseName), "databaseName");
            }
            if (!(conn as ConfigDatabase).AllowedRemoteAccess)
            {
                throw new ArgumentException(string.Format("Указанное соединение ({0}) не допускает удаленный доступ. Установите свойство AllowedRemoteAccess в true!", databaseName), "databaseName");
            }

            sync_db = conn.GetConnection().GetSyncDatabase();
        }
Esempio n. 9
0
 public SyncAgent(ISyncDatabase Local, ISyncDatabase Remote) : this()
 {
     _Local  = Local;
     _Remote = Remote;
 }
Esempio n. 10
0
 public InventoryAnalytics(ISyncDatabase syncDatabase, EtsyAPIProxy etsyAPI)
 {
     this.syncDatabase = syncDatabase;
     this.estyAPI      = etsyAPI;
 }