diff --git a/src/timer.rs b/src/timer.rs index 7ba9538..3e0be67 100644 --- a/src/timer.rs +++ b/src/timer.rs @@ -75,25 +75,21 @@ impl Timer { get_tick_count: fn () -> i64, gctime: i32, cache_timer_num: i32) { + let init_timer_list = |tv: &mut [TimerListListHeadRp]| { + for i in 0..tv.len() { + tv[i] = crate::ListHead::::new_head(); + } + }; + self.get_tick_count = get_tick_count; self.cache_timer_num = cache_timer_num; self.free_timer_num = 0; self.work_list = crate::ListHead::::new_head(); - for i in 0..self.tv1.len() { - self.tv1[i] = crate::ListHead::::new_head(); - } - for i in 0..self.tv2.len() { - self.tv2[i] = crate::ListHead::::new_head(); - } - for i in 0..self.tv3.len() { - self.tv3[i] = crate::ListHead::::new_head(); - } - for i in 0..self.tv4.len() { - self.tv4[i] = crate::ListHead::::new_head(); - } - for i in 0..self.tv5.len() { - self.tv5[i] = crate::ListHead::::new_head(); - } + init_timer_list(&mut self.tv1); + init_timer_list(&mut self.tv2); + init_timer_list(&mut self.tv3); + init_timer_list(&mut self.tv4); + init_timer_list(&mut self.tv5); self.timer_tick = (self.get_tick_count)(); let self_wp = self.shared_from_self(); let cb = Box::new( @@ -306,7 +302,8 @@ impl Timer { } pub fn get_idle_time(&self) -> i64 { - return 0; + let mut idle_time = 0; + return idle_time; } fn gc_timer(&mut self, e: TimerEvent, _args: Option>>) { @@ -314,13 +311,10 @@ impl Timer { TimerEvent::Exec => { while self.free_timer_num > self.cache_timer_num && !self.free_timer_list.borrow().empty() { - let timer = &self.free_timer_list.borrow().first_entry(); - timer.upgrade().unwrap().borrow_mut().timer_entry.borrow_mut().del_init(); + let timer = &self.free_timer_list.borrow().first_entry().upgrade().unwrap(); + timer.borrow_mut().timer_entry.borrow_mut().del_init(); self.free_timer_num -= 1; } - } - TimerEvent::Custom(_v) => { - } _ => {