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(); }
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); }
protected override void Execute(Internal.IValueContainer valueContainer) { HandleSelf(valueContainer); }
void Internal.ITreeHandleable.MakeReadyFromSettled(Internal.IValueContainer valueContainer) { valueContainer.Retain(); _value = valueContainer; _state = valueContainer.GetState(); }
void Internal.ITreeHandleable.MakeReadyFromSettled(Promise owner, Internal.IValueContainer valueContainer) { throw new System.InvalidOperationException(); }
void Internal.ITreeHandleable.MakeReady(Promise owner, Internal.IValueContainer valueContainer, ref ValueLinkedQueue <Internal.ITreeHandleable> handleQueue) { throw new System.InvalidOperationException(); }