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 <mhar...@gmail.com>

> 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 蒋浩 <jax...@gmail.com>
>
>> 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 <mhar...@gmail.com>
>>
>>> 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
>>>
>>>
>>>
>>>
>>
>

Reply via email to