Exemplo n.º 1
0
        public override async Task End(object obj, SynchronousOptions opts = null)
        {
            var willLeftBegin  = LeftSynchronizer.WillBegin(obj);
            var willRightBegin = RightSynchronizer.WillBegin(obj);

            if (willLeftBegin && willRightBegin)
            {
                await Task.CompletedTask;
            }
            else if (willLeftBegin)
            {
                await RightSynchronizer.End(obj, SynchronousOptions.UpdateInternalOptions(opts, new InternalSynchronousOptions().WithHandlingCondition()));
            }
            else if (willRightBegin)
            {
                await LeftSynchronizer.End(obj, SynchronousOptions.UpdateInternalOptions(opts, new InternalSynchronousOptions().WithHandlingCondition()));
            }
            else
            {
                await LeftSynchronizer.End(obj, opts);
            }
        }
Exemplo n.º 2
0
        public override bool WillEnd(object obj, SynchronousOptions opts = null)
        {
            var willLeftBegin  = LeftSynchronizer.WillBegin(obj);
            var willRightBegin = RightSynchronizer.WillBegin(obj);

            if (willLeftBegin && willRightBegin)
            {
                return(false);
            }
            else if (willLeftBegin)
            {
                return(RightSynchronizer.WillEnd(obj, SynchronousOptions.UpdateInternalOptions(opts, new InternalSynchronousOptions().WithHandlingCondition())));
            }
            else if (willRightBegin)
            {
                return(LeftSynchronizer.WillEnd(obj, SynchronousOptions.UpdateInternalOptions(opts, new InternalSynchronousOptions().WithHandlingCondition())));
            }
            else
            {
                return(LeftSynchronizer.WillEnd(obj, opts));
            }
        }