Esempio n. 1
0
                bool IMultiTreeHandleable.Handle(Internal.IValueContainer valueContainer, PromisePassThrough passThrough, int index)
                {
                    Promise owner  = passThrough.Owner;
                    bool    done   = --_waitCount == 0;
                    bool    handle = false;

                    if (_valueOrPrevious == null)
                    {
                        owner._wasWaitedOn = true;
                        if (owner._state != State.Resolved | done)
                        {
                            valueContainer.Retain();
                            _valueOrPrevious = valueContainer;
                            handle           = true;
                        }
                        else
                        {
                            IncrementProgress(passThrough);
                        }
                    }
                    if (done)
                    {
                        while (_passThroughs.IsNotEmpty)
                        {
                            _passThroughs.Pop().Release();
                        }
                        ReleaseInternal();
                    }
                    return(handle);
                }
 void Internal.ITreeHandleable.MakeReady(Internal.IValueContainer valueContainer,
                                         ref ValueLinkedQueue <Internal.ITreeHandleable> handleQueue,
                                         ref ValueLinkedQueue <Internal.ITreeHandleable> cancelQueue)
 {
     valueContainer.Retain();
     _value = valueContainer;
     _state = valueContainer.GetState();
 }
Esempio n. 3
0
                bool IMultiTreeHandleable.Handle(Internal.IValueContainer valueContainer, PromisePassThrough passThrough, int index)
                {
                    Promise owner  = passThrough.Owner;
                    bool    handle = _valueOrPrevious == null;

                    if (handle)
                    {
                        owner._wasWaitedOn = true;
                        valueContainer.Retain();
                        _valueOrPrevious = valueContainer;
                    }
                    if (--_waitCount == 0)
                    {
                        while (_passThroughs.IsNotEmpty)
                        {
                            _passThroughs.Pop().Release();
                        }
                        ReleaseInternal();
                    }
                    return(handle);
                }
Esempio n. 4
0
 protected override void Execute(Internal.IValueContainer valueContainer)
 {
     HandleSelf(valueContainer);
 }
 void Internal.ITreeHandleable.MakeReadyFromSettled(Internal.IValueContainer valueContainer)
 {
     valueContainer.Retain();
     _value = valueContainer;
     _state = valueContainer.GetState();
 }
Esempio n. 6
0
 void Internal.ITreeHandleable.MakeReadyFromSettled(Promise owner, Internal.IValueContainer valueContainer)
 {
     throw new System.InvalidOperationException();
 }
Esempio n. 7
0
 void Internal.ITreeHandleable.MakeReady(Promise owner, Internal.IValueContainer valueContainer, ref ValueLinkedQueue <Internal.ITreeHandleable> handleQueue)
 {
     throw new System.InvalidOperationException();
 }