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 <[email protected]>
> 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 蒋浩 <[email protected]>
>
>> 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 <[email protected]>
>>
>>> 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
>>>
>>>
>>>
>>>
>>
>