public override void OnNext(TSource value) { var key = default(TKey); try { key = parent.keySelector(value); } catch (Exception exception) { Error(exception); return; } var fireNewMapEntry = false; var writer = default(ISubject <TElement>); try { if (key == null) { if (nullKeySubject == null) { nullKeySubject = new Subject <TElement>(); fireNewMapEntry = true; } writer = nullKeySubject; } else { if (!map.TryGetValue(key, out writer)) { writer = new Subject <TElement>(); map.Add(key, writer); fireNewMapEntry = true; } } } catch (Exception exception) { Error(exception); return; } if (fireNewMapEntry) { var group = new GroupedObservable <TKey, TElement>(key, writer, refCountDisposable); observer.OnNext(group); } var element = default(TElement); try { element = parent.elementSelector(value); } catch (Exception exception) { Error(exception); return; } writer.OnNext(element); }
public override void OnNext(TSource value) { TKey val = default(TKey); try { val = parent.keySelector(value); } catch (Exception exception) { Error(exception); return; } bool flag = false; ISubject <TElement> value2 = null; try { if (val == null) { if (nullKeySubject == null) { nullKeySubject = new Subject <TElement>(); flag = true; } value2 = nullKeySubject; } else if (!map.TryGetValue(val, out value2)) { value2 = new Subject <TElement>(); map.Add(val, value2); flag = true; } } catch (Exception exception2) { Error(exception2); return; } if (flag) { GroupedObservable <TKey, TElement> value3 = new GroupedObservable <TKey, TElement>(val, value2, refCountDisposable); observer.OnNext(value3); } TElement val2 = default(TElement); try { val2 = parent.elementSelector(value); } catch (Exception exception3) { Error(exception3); return; } value2.OnNext(val2); }