1
This commit is contained in:
parent
8b68ed92b6
commit
a599356cff
@ -50,18 +50,19 @@ impl<T> ListHead<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn empty(&self) -> bool {
|
pub fn empty(&self) -> bool {
|
||||||
return self as *const ListHead<T> == self.next.upgrade().unwrap().as_ptr();
|
return self.next.ptr_eq(&self.prev);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn add_tail(head: &Rc::<RefCell::<ListHead<T>>>,
|
pub fn add_tail(&self,
|
||||||
pnew: &Rc::<RefCell::<ListHead<T>>>) {
|
pnew: &Rc::<RefCell::<ListHead<T>>>) {
|
||||||
|
/*
|
||||||
let prev = &mut head.borrow_mut().prev;
|
let prev = &mut head.borrow_mut().prev;
|
||||||
let next = Rc::downgrade(head);
|
let next = Rc::downgrade(head);
|
||||||
|
|
||||||
next.upgrade().unwrap().borrow_mut().prev = Rc::downgrade(pnew);
|
next.upgrade().unwrap().borrow_mut().prev = Rc::downgrade(pnew);
|
||||||
pnew.borrow_mut().next = next;
|
pnew.borrow_mut().next = next;
|
||||||
pnew.borrow_mut().prev = prev.clone();
|
pnew.borrow_mut().prev = prev.clone();
|
||||||
prev.upgrade().unwrap().borrow_mut().next = Rc::downgrade(pnew);
|
prev.upgrade().unwrap().borrow_mut().next = Rc::downgrade(pnew);*/
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn first_entry(&self) -> Weak::<RefCell::<T>> {
|
pub fn first_entry(&self) -> Weak::<RefCell::<T>> {
|
||||||
|
@ -288,8 +288,7 @@ impl Timer {
|
|||||||
t.borrow_mut().expires = (self.get_tick_count)() + expire_time as i64;
|
t.borrow_mut().expires = (self.get_tick_count)() + expire_time as i64;
|
||||||
match attacher {
|
match attacher {
|
||||||
Some(v) => {
|
Some(v) => {
|
||||||
crate::ListHead::add_tail(&v.borrow_mut().timers,
|
v.borrow_mut().timers.borrow().add_tail(&t.borrow_mut().attach_entry);
|
||||||
&t.borrow_mut().attach_entry);
|
|
||||||
}
|
}
|
||||||
None => {
|
None => {
|
||||||
|
|
||||||
@ -322,7 +321,7 @@ impl Timer {
|
|||||||
index = (t.borrow().expires >> (TVR_BITS + 3 * TVN_BITS)) & (TVN_MASK as i64);
|
index = (t.borrow().expires >> (TVR_BITS + 3 * TVN_BITS)) & (TVN_MASK as i64);
|
||||||
vec = &mut self.tv5[index as usize];
|
vec = &mut self.tv5[index as usize];
|
||||||
}
|
}
|
||||||
crate::ListHead::add_tail(&vec, &t.borrow_mut().timer_entry);
|
vec.borrow().add_tail(&t.borrow_mut().timer_entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn internal_delete(&mut self, timer_wp: TimerWp, is_destory: bool) {
|
fn internal_delete(&mut self, timer_wp: TimerWp, is_destory: bool) {
|
||||||
@ -347,8 +346,7 @@ impl Timer {
|
|||||||
if Rc::weak_count(&v.borrow().wp) > 0 {
|
if Rc::weak_count(&v.borrow().wp) > 0 {
|
||||||
v.borrow_mut().wp = Rc::new(v.borrow().holder.clone());
|
v.borrow_mut().wp = Rc::new(v.borrow().holder.clone());
|
||||||
}
|
}
|
||||||
crate::ListHead::add_tail(&self.free_timer_list,
|
self.free_timer_list.borrow().add_tail(&v.borrow_mut().timer_entry);
|
||||||
&v.borrow_mut().timer_entry);
|
|
||||||
self.free_timer_num += 1;
|
self.free_timer_num += 1;
|
||||||
}
|
}
|
||||||
None => {
|
None => {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user