@@ -30,7 +30,6 @@ fn delayed_send<T: send>(msecs: uint, ch: comm::chan<T>, val: T) {
30
30
let timer_ptr = ptr:: addr_of ( timer) ;
31
31
let hl_loop = uv:: global_loop:: get ( ) ;
32
32
uv:: hl:: interact ( hl_loop) { |loop_ptr|
33
- uv:: hl:: ref ( hl_loop, timer_ptr) ;
34
33
let init_result = uv:: ll:: timer_init ( loop_ptr, timer_ptr) ;
35
34
if ( init_result == 0i32 ) {
36
35
let start_result = uv:: ll:: timer_start (
@@ -54,9 +53,6 @@ fn delayed_send<T: send>(msecs: uint, ch: comm::chan<T>, val: T) {
54
53
comm:: recv ( timer_done_po) ;
55
54
// notify the caller immediately
56
55
comm:: send ( ch, copy ( val) ) ;
57
- // then clean up our handle
58
- uv:: hl:: unref_and_close ( hl_loop, timer_ptr,
59
- delayed_send_close_cb) ;
60
56
// uv_close for this timer has been processed
61
57
comm:: recv ( timer_done_po) ;
62
58
}
@@ -122,6 +118,7 @@ crust fn delayed_send_cb(handle: *uv::ll::uv_timer_t,
122
118
let stop_result = uv:: ll:: timer_stop ( handle) ;
123
119
if ( stop_result == 0i32 ) {
124
120
comm:: send ( timer_done_ch, ( ) ) ;
121
+ uv:: ll:: close ( handle, delayed_send_close_cb) ;
125
122
}
126
123
else {
127
124
let loop_ptr = uv:: ll:: get_loop_for_uv_handle ( handle) ;
@@ -140,14 +137,12 @@ crust fn delayed_send_close_cb(handle: *uv::ll::uv_timer_t) unsafe {
140
137
#[ cfg( test) ]
141
138
mod test {
142
139
#[ test]
143
- #[ ignore]
144
- fn test_timer_simple_sleep_test ( ) {
140
+ fn test_gl_timer_simple_sleep_test ( ) {
145
141
sleep ( 1 u) ;
146
142
}
147
143
148
144
#[ test]
149
- #[ ignore]
150
- fn test_timer_recv_timeout_before_time_passes ( ) {
145
+ fn test_gl_timer_recv_timeout_before_time_passes ( ) {
151
146
let expected = rand:: rng ( ) . gen_str ( 16 u) ;
152
147
let test_po = comm:: port :: < str > ( ) ;
153
148
let test_ch = comm:: chan ( test_po) ;
@@ -165,8 +160,7 @@ mod test {
165
160
}
166
161
167
162
#[ test]
168
- #[ ignore]
169
- fn test_timer_recv_timeout_after_time_passes ( ) {
163
+ fn test_gl_timer_recv_timeout_after_time_passes ( ) {
170
164
let expected = rand:: rng ( ) . gen_str ( 16 u) ;
171
165
let fail_msg = rand:: rng ( ) . gen_str ( 16 u) ;
172
166
let test_po = comm:: port :: < str > ( ) ;
0 commit comments