Пример #1
0
 private void OnOutputPushValue(KeySortedGroupSubject grp, TOut value)
 {
     lock (_syncLock)
     {
         base.PushValue(value);
     }
 }
Пример #2
0
 private void OnOutputException(KeySortedGroupSubject grp, Exception exception)
 {
     lock (_syncLock)
     {
         base.PushException(exception);
     }
 }
Пример #3
0
 private void OnSourcePush(TIn value)
 {
     if (CancellationToken.IsCancellationRequested)
     {
         return;
     }
     lock (_syncLock)
     {
         TKey key = _getKey(value);
         if (_currentGroup == null || !_currentGroup.Key.Equals(key))
         {
             if (_currentGroup != null)
             {
                 _currentGroup.PushSubject.Complete();
                 _currentGroup.PushSubject.Dispose();
             }
             _currentGroup = new KeySortedGroupSubject
             {
                 Key          = key,
                 FirstElement = value,
                 PushSubject  = new PushSubject <TIn>(base.CancellationToken)
             };
             _currentGroup.OutputSubscription = _groupedObservableTransformation(_currentGroup.PushSubject, value).Subscribe(
                 i => OnOutputPushValue(_currentGroup, i),
                 () => OnOutputCompleted(_currentGroup),
                 e => OnOutputException(_currentGroup, e)
                 );
         }
         _currentGroup.PushSubject.PushValue(value);
     }
 }
Пример #4
0
 private void OnOutputCompleted(KeySortedGroupSubject grp)
 {
     lock (_syncLock)
     {
         _currentGroup?.OutputSubscription?.Dispose();
         _currentGroup = null;
         TryComplete();
     }
 }