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) {
9494 return schedule (recursiveAction , initialDelay , unit );
9595 }
9696
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+
97148 public abstract static class Inner implements Subscription {
98149
99150 /**
You can’t perform that action at this time.
0 commit comments