Remove the 'callback_ms' function from EventLoop
This is a peculiar function to require event loops to implement, and it's only used in one spot during tests right now. Instead, a possibly more robust apis for timers should be used rather than requiring all event loops to implement a curious-looking function.
This commit is contained in:
parent
3b30377e14
commit
3ee5ef12fb
@ -28,7 +28,6 @@ pub trait EventLoop {
|
||||
fn run(&mut self);
|
||||
fn callback(&mut self, ~fn());
|
||||
fn pausible_idle_callback(&mut self) -> ~PausibleIdleCallback;
|
||||
fn callback_ms(&mut self, ms: u64, ~fn());
|
||||
fn remote_callback(&mut self, ~fn()) -> ~RemoteCallback;
|
||||
|
||||
/// The asynchronous I/O services. Not all event loops may provide one
|
||||
|
@ -1147,22 +1147,15 @@ mod test {
|
||||
|
||||
#[test]
|
||||
fn test_io_callback() {
|
||||
use rt::io::timer;
|
||||
|
||||
// This is a regression test that when there are no schedulable tasks
|
||||
// in the work queue, but we are performing I/O, that once we do put
|
||||
// something in the work queue again the scheduler picks it up and doesn't
|
||||
// exit before emptying the work queue
|
||||
do run_in_newsched_task {
|
||||
do spawntask {
|
||||
let sched: ~Scheduler = Local::take();
|
||||
do sched.deschedule_running_task_and_then |sched, task| {
|
||||
let task = Cell::new(task);
|
||||
do sched.event_loop.callback_ms(10) {
|
||||
rtdebug!("in callback");
|
||||
let mut sched: ~Scheduler = Local::take();
|
||||
sched.enqueue_blocked_task(task.take());
|
||||
Local::put(sched);
|
||||
}
|
||||
}
|
||||
timer::sleep(10);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -222,15 +222,6 @@ impl EventLoop for UvEventLoop {
|
||||
} as ~PausibleIdleCallback
|
||||
}
|
||||
|
||||
fn callback_ms(&mut self, ms: u64, f: ~fn()) {
|
||||
let mut timer = TimerWatcher::new(self.uvio.uv_loop());
|
||||
do timer.start(ms, 0) |timer, status| {
|
||||
assert!(status.is_none());
|
||||
timer.close(||());
|
||||
f();
|
||||
}
|
||||
}
|
||||
|
||||
fn remote_callback(&mut self, f: ~fn()) -> ~RemoteCallback {
|
||||
~UvRemoteCallback::new(self.uvio.uv_loop(), f) as ~RemoteCallback
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user