[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [Libevent-users] Destroying event from callback function



@èæ

It doesn't matter weather I'll add or delete event, but I need event struct for both operations.

@song
Yes I think it'll do what I want. I thought that maybe there is a bit simpler method, but this is solution is good enough - thanks a lot!


Michal

2011/4/7 èæ <jaxecn@xxxxxxxxx>
hi,you could do like this:
set event type withoutÂEV_PERSISTENTÂ

void cb_func(int fd,short types,void* arg)
{
ÂÂ Â//do some work
ÂÂif (cond==false)
ÂÂ{
ÂÂ event_add(event);//will be triggered again.
ÂÂ}
}

2011/4/7 MichaÅ KrÃl <mharnen@xxxxxxxxx>
Hi!

Thanks for your response. Unfortunately I want to invoke this event more then once, and stop invoking after particular condition occurs, so it's more like:

void cb_func(agrs){

ÂÂÂ //do some work
ÂÂÂÂ if(cond)
ÂÂÂÂÂÂÂÂ event_del(event);

ÂÂÂ
}

2011/4/7 èæ <jaxecn@xxxxxxxxx>
hi,maybe you callÂevent_new without the flag of EV_PERSISTENT,so when cb_func is triggered ,the event isÂautomaticÂdeleted by event_base_loop,it's seems there is two ev_del calls in  your example ,
forgive my pool english..


2011/4/7 MichaÅ KrÃl <mharnen@xxxxxxxxx>
Hi,

I was wondering if there is any way I can access event object within callback function in libevent2? I know I can put it in global variable, but I'll have a lot of events and I want to access particular one, so I want to avoid it.

I cannot pass it as an argument because I'll have pointer to event structure after setting callback in evet_new.

To be precise I want to do something like this:


int main(){
ÂÂÂÂ event = event_new(base, socket, flags, cb_func, args);

ÂÂÂÂ event_add(event);
}

void cb_func(args){

ÂÂÂÂ //do some work

ÂÂÂÂ event_del(event);Â <-- the problem is with getting event structure which invoked this callback }


Thanks in advance

Michal