Exemplo n.º 1
0
        public IDisposable Perform(SynchronizationComputation <TLeft, TRight> computation, SynchronizationDirection direction, ISynchronizationContext context)
        {
            switch (context.ChangePropagation)
            {
            case ChangePropagationMode.None:
                return(null);

            case ChangePropagationMode.OneWay:
                if (!direction.IsRightToLeft())
                {
                    return(null);
                }
                break;

            case ChangePropagationMode.TwoWay:
                break;

            default:
                throw new InvalidOperationException("The change propagation mode is invalid.");
            }

            var instantiationMonitor = Predicate.Observe(computation.Opposite.Input);
            var monitor = new Monitor(instantiationMonitor, computation);

            monitor.StartMonitoring();
            return(monitor);
        }
Exemplo n.º 2
0
 public virtual IDisposable Perform(SynchronizationComputation <TLeft, TRight> computation, SynchronizationDirection direction, ISynchronizationContext context)
 {
     if (direction.IsRightToLeft())
     {
         return(Perform(computation.Opposite.Input, computation.Input, context));
     }
     else
     {
         return(null);
     }
 }