// - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 -----------------------------------------------"); }
public void EndSession(bool commit) { sync_db.EndSession(commit); }