Пример #1
0
        /// <summary>
        /// Снять объект с репликации
        /// </summary>
        public Boolean FreeObject(IReplicationObject replicationObject)
        {
            var result = true;
            var existReplicationObject = _replicationObjects.FirstOrDefault(r => r.Uid == replicationObject.Uid);

            try
            {
                replicationObject.PropertyChanged -= PropertyChangedHandler;

                if (existReplicationObject != null)
                {
                    existReplicationObject.PropertyChanged -= PropertyChangedHandler;

                    _replicationObjects.RemoveAll(r => r.Uid == replicationObject.Uid);
                    _channel.SetObject(GetReplicationInfo(replicationObject), OperationType.Delete);
                }
            }
            catch (Exception)
            {
                if (existReplicationObject != null)
                {
                    existReplicationObject.PropertyChanged += PropertyChangedHandler;
                }
                replicationObject.PropertyChanged += PropertyChangedHandler;
                _replicationObjects.Add(replicationObject);

                result = false;
            }
            return(result);
        }
Пример #2
0
        /// <summary>
        /// Установить объект для репликации
        /// </summary>
        public Boolean SetObject(IReplicationObject replicationObject)
        {
            var result = true;

            try
            {
                replicationObject.PropertyChanged += PropertyChangedHandler;
                _replicationObjects.Add(replicationObject);

                _channel.SetObject(GetReplicationInfo(replicationObject), OperationType.Create);
            }
            catch (Exception)
            {
                replicationObject.PropertyChanged -= PropertyChangedHandler;
                _replicationObjects.Remove(replicationObject);

                result = false;
            }
            return(result);
        }
Пример #3
0
 /// <summary>
 /// Вызвать событие репликации объекта
 /// </summary>
 /// <param name="replicationObject">Объект репликации</param>
 /// <param name="operationType">Тип операции</param>
 private void RaiseObjectReplicated(IReplicationObject replicationObject, OperationType operationType)
 {
     Application.Current.InvokeSafe(() => InvokeObjectReplicated(new ReplicationEventArgs(replicationObject, operationType)));
 }
Пример #4
0
 /// <summary>
 /// Аргументы для события репликации
 /// </summary>
 /// <param name="replicationObject">Реплицируемый объект</param>
 /// <param name="operationType">Тип операции репликации</param>
 public ReplicationEventArgs(IReplicationObject replicationObject, OperationType operationType)
 {
     ReplicationObject = replicationObject;
     OperationType     = operationType;
 }
Пример #5
0
 /// <summary>
 /// Аргументы для события репликации
 /// </summary>
 /// <param name="replicationObject">Реплицируемый объект</param>
 /// <param name="operationType">Тип операции репликации</param>
 public ReplicationEventArgs(IReplicationObject replicationObject, OperationType operationType)
 {
     ReplicationObject = replicationObject;
     OperationType = operationType;
 }