Mercurial > projects > mde
comparison mde/scheduler/Scheduler.d @ 85:56c0ddd90193
Intermediate commit (not stable). Changes to init system.
author | Diggory Hardy <diggory.hardy@gmail.com> |
---|---|
date | Thu, 11 Sep 2008 11:33:51 +0100 |
parents | 66d555da083e |
children | 2a364c7d82c9 |
comparison
equal
deleted
inserted
replaced
84:e0f1ec7fe73a | 85:56c0ddd90193 |
---|---|
74 * This function should have a unique identifier, which can be used with get/remove/request. | 74 * This function should have a unique identifier, which can be used with get/remove/request. |
75 * The identifier can be supplied or generated by getNewID(). | 75 * The identifier can be supplied or generated by getNewID(). |
76 * | 76 * |
77 * Use the returned pointer to set the scheduling, e.g.: | 77 * Use the returned pointer to set the scheduling, e.g.: |
78 * ----- | 78 * ----- |
79 * scheduler.add(scheduler.getNewID, myFunction).set(false, TimeSpan.millis (10)); | 79 * scheduler.add(scheduler.getNewID, myFunction).set(false, TimeSpan.fromMillis (10)); |
80 * scheduler.get(15).frame = true; | 80 * scheduler.get(15).frame = true; |
81 */ | 81 */ |
82 ScheduleFunc add (ID id, scheduleFct func) { | 82 ScheduleFunc add (ID id, scheduleFct func) { |
83 // Convert to a delegate. Maybe someday implicit casts will work... | 83 // Convert to a delegate. Maybe someday implicit casts will work... |
84 scheduleDlg d; | 84 scheduleDlg d; |
174 | 174 |
175 int ctr1 = 0; | 175 int ctr1 = 0; |
176 void inc1 (TimeSpan) { ++ctr1; } | 176 void inc1 (TimeSpan) { ++ctr1; } |
177 s.add(1,&inc1).frame = true; | 177 s.add(1,&inc1).frame = true; |
178 | 178 |
179 TimeSpan interval = TimeSpan.millis(1);// non-zero so we can check zero after first call | 179 TimeSpan interval = TimeSpan.fromMillis(1);// non-zero so we can check zero after first call |
180 void perInt (TimeSpan i) { interval = i; } | 180 void perInt (TimeSpan i) { interval = i; } |
181 s.add(2,&perInt).set(false, TimeSpan.millis(10)); | 181 s.add(2,&perInt).set(false, TimeSpan.fromMillis(10)); |
182 | 182 |
183 Time t = Time.epoch1970; // starting time (value isn't important) | 183 Time t = Time.epoch1970; // starting time (value isn't important) |
184 s.execute (t); | 184 s.execute (t); |
185 assert (ctr1 == 1); // called once | 185 assert (ctr1 == 1); // called once |
186 assert (interval == TimeSpan.zero); // initial interval | 186 assert (interval == TimeSpan.zero); // initial interval |
187 | 187 |
188 t += TimeSpan.millis (5); // 5ms later... | 188 t += TimeSpan.fromMillis (5); // 5ms later... |
189 s.execute (t); | 189 s.execute (t); |
190 assert (ctr1 == 2); | 190 assert (ctr1 == 2); |
191 assert (interval == TimeSpan.zero); // perInt shouldn't get called | 191 assert (interval == TimeSpan.zero); // perInt shouldn't get called |
192 | 192 |
193 s.get(1).frame = false; // don't call per-frame anymore | 193 s.get(1).frame = false; // don't call per-frame anymore |
194 s.get(1).request = true; // but request next call | 194 s.get(1).request = true; // but request next call |
195 | 195 |
196 t += TimeSpan.millis (5); | 196 t += TimeSpan.fromMillis (5); |
197 s.execute (t); | 197 s.execute (t); |
198 assert (ctr1 == 3); // as requested | 198 assert (ctr1 == 3); // as requested |
199 assert (interval == TimeSpan.millis (10)); // perInt should get called (just!) | 199 assert (interval == TimeSpan.fromMillis (10)); // perInt should get called (just!) |
200 | 200 |
201 s.request(2); // request this | 201 s.request(2); // request this |
202 | 202 |
203 t += TimeSpan.millis (8); | 203 t += TimeSpan.fromMillis (8); |
204 s.execute (t); | 204 s.execute (t); |
205 assert (ctr1 == 3); // inc1 shouldn't run | 205 assert (ctr1 == 3); // inc1 shouldn't run |
206 assert (interval == TimeSpan.millis (8)); // perInt was requested | 206 assert (interval == TimeSpan.fromMillis (8)); // perInt was requested |
207 | 207 |
208 t += TimeSpan.millis (4); | 208 t += TimeSpan.fromMillis (4); |
209 s.execute (t); | 209 s.execute (t); |
210 // check perInt's last call-time was updated by the request, so it doesn't get run now: | 210 // check perInt's last call-time was updated by the request, so it doesn't get run now: |
211 assert (interval == TimeSpan.millis (8)); | 211 assert (interval == TimeSpan.fromMillis (8)); |
212 | 212 |
213 logger.info ("Unittest complete."); | 213 logger.info ("Unittest complete."); |
214 } | 214 } |
215 } | 215 } |