26
26
import rx .Observer ;
27
27
import rx .Subscription ;
28
28
import rx .util .AtomicObservableSubscription ;
29
+ import rx .util .functions .Action0 ;
29
30
import rx .util .functions .Action1 ;
30
31
import rx .util .functions .Func1 ;
31
32
import rx .util .functions .Func2 ;
@@ -65,12 +66,12 @@ public static <T> Func1<Observer<T>, Subscription> scan(Observable<T> sequence,
65
66
66
67
private static class AccuWithoutInitialValue <T > implements Func1 <Observer <T >, Subscription > {
67
68
private final Observable <T > sequence ;
68
- private final Func2 <T , T , T > accumlatorFunction ;
69
+ private final Func2 <T , T , T > accumulatorFunction ;
69
70
private T initialValue ;
70
71
71
72
private AccuWithoutInitialValue (Observable <T > sequence , Func2 <T , T , T > accumulator ) {
72
73
this .sequence = sequence ;
73
- this .accumlatorFunction = accumulator ;
74
+ this .accumulatorFunction = accumulator ;
74
75
}
75
76
76
77
@ Override
@@ -80,22 +81,32 @@ public Subscription call(final Observer<T> observer) {
80
81
public void call (T value ) {
81
82
initialValue = value ;
82
83
}
84
+ }, new Action1 <Exception >() {
85
+ @ Override
86
+ public void call (Exception e ) {
87
+ observer .onError (e );
88
+ }
89
+ }, new Action0 () {
90
+ @ Override
91
+ public void call () {
92
+ observer .onCompleted ();
93
+ }
83
94
});
84
- Accumulator <T , T > scan = new Accumulator <T , T >(sequence .skip (1 ), initialValue , accumlatorFunction );
95
+ Accumulator <T , T > scan = new Accumulator <T , T >(sequence .skip (1 ), initialValue , accumulatorFunction );
85
96
return scan .call (observer );
86
97
}
87
98
}
88
99
89
100
private static class Accumulator <T , R > implements Func1 <Observer <R >, Subscription > {
90
101
private final Observable <T > sequence ;
91
102
private final R initialValue ;
92
- private final Func2 <R , T , R > accumlatorFunction ;
103
+ private final Func2 <R , T , R > accumulatorFunction ;
93
104
private final AtomicObservableSubscription subscription = new AtomicObservableSubscription ();
94
105
95
106
private Accumulator (Observable <T > sequence , R initialValue , Func2 <R , T , R > accumulator ) {
96
107
this .sequence = sequence ;
97
108
this .initialValue = initialValue ;
98
- this .accumlatorFunction = accumulator ;
109
+ this .accumulatorFunction = accumulator ;
99
110
}
100
111
101
112
@ Override
@@ -115,7 +126,7 @@ public Subscription call(final Observer<R> observer) {
115
126
@ Override
116
127
public synchronized void onNext (T value ) {
117
128
try {
118
- acc = accumlatorFunction .call (acc , value );
129
+ acc = accumulatorFunction .call (acc , value );
119
130
observer .onNext (acc );
120
131
} catch (Exception ex ) {
121
132
observer .onError (ex );
0 commit comments