/// <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); }
/// <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); }
/// <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))); }
/// <summary> /// Аргументы для события репликации /// </summary> /// <param name="replicationObject">Реплицируемый объект</param> /// <param name="operationType">Тип операции репликации</param> public ReplicationEventArgs(IReplicationObject replicationObject, OperationType operationType) { ReplicationObject = replicationObject; OperationType = operationType; }