File tree Expand file tree Collapse file tree 1 file changed +51
-0
lines changed
rxjava-core/src/main/java/rx Expand file tree Collapse file tree 1 file changed +51
-0
lines changed Original file line number Diff line number Diff line change @@ -94,6 +94,57 @@ public void call(Inner inner) {
94
94
return schedule (recursiveAction , initialDelay , unit );
95
95
}
96
96
97
+ public final Subscription scheduleRecursive (final Action1 <Recurse > action ) {
98
+ return schedule (new Action1 <Inner >() {
99
+
100
+ @ Override
101
+ public void call (Inner inner ) {
102
+ action .call (new Recurse (inner , action ));
103
+ }
104
+
105
+ });
106
+ }
107
+
108
+ public static final class Recurse {
109
+ final Action1 <Recurse > action ;
110
+ final Inner inner ;
111
+
112
+ private Recurse (Inner inner , Action1 <Recurse > action ) {
113
+ this .inner = inner ;
114
+ this .action = action ;
115
+ }
116
+
117
+ /**
118
+ * Schedule the current function for execution immediately.
119
+ */
120
+ public final void schedule () {
121
+ final Recurse self = this ;
122
+ inner .schedule (new Action1 <Inner >() {
123
+
124
+ @ Override
125
+ public void call (Inner _inner ) {
126
+ action .call (self );
127
+ }
128
+
129
+ });
130
+ }
131
+
132
+ /**
133
+ * Schedule the current function for execution in the future.
134
+ */
135
+ public final void schedule (long delay , TimeUnit unit ) {
136
+ final Recurse self = this ;
137
+ inner .schedule (new Action1 <Inner >() {
138
+
139
+ @ Override
140
+ public void call (Inner _inner ) {
141
+ action .call (self );
142
+ }
143
+
144
+ }, delay , unit );
145
+ }
146
+ }
147
+
97
148
public abstract static class Inner implements Subscription {
98
149
99
150
/**
You can’t perform that action at this time.
0 commit comments