[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Possible bug in CalendarScheduler::cancel()



Hi all,

I write a code for WF2Q scheduler. Like Paolo Losi, I scheduler an event
as following:

Schedule::instance().schedule((Handler*)&wfq_handler,wfq_event,next_time);

And later cancel this event like this:

if (wfq_event!=NULL) {
	Scheduler::instance().cancel(wfq_event);
	delete wfq_event;
}

I found that this event is not canceled at all. I'm running
ns-allinone-2.1b5 under HPUX 10.20 and using CalendarScheduler, could
anybody help me to solve the problem? 

Thank you very much for the help.

P.S: I write down here this function, would there be a bug here?

void CalendarScheduler::cancel(Event* e) {
	int i=(int)(((long)(e->time_ * oneonwidth_)) & buckbit_);

	if (e->uid_ <=0)
		return;
	for (Event** p=buckets_+i;(*p)!=NULL;p=&(*p)->next_)
		if ((*p)==e) {
			(*p)=(*p)->next_;
			e->uid_= - e->uid_;
			qsize_--;
			return;
		}
	abort();
}

-- 
------------------------------------------------
    Nguyen Huu Thanh                      

    Universitaet der Bundeswehr Muenchen  
    Institut fuer informationstechnische Systeme
    Werner-Heisenberg-Weg 39
    85577 Neubiberg                        
    Tel.: +49 89 6004-2279                   
    Email: [email protected]  
-------------------------------------------------