Hello! 

I'm using event2 libs and i want to know if it is possible to put new event on 
the top of the queue.

For example, i have next events queue: 

ev1 -> ev2 -> ev3 

While processing ev1 an error occured. Now i want to create new event(err_ev) 
that will close all application's modules and insert it before ev2. 

ev1 -> err_ev -> ev2-> ev3

So i'll be able to free all allocated data in ev1 and close application 
"normally". 

Some pseudo-code:

void ScheduleFree()
{
        event *ev;

        ev = event_new(base,-1,EV_TIMEOUT,err_ev,data);               
        event_base_set(base,ev);
}

void ev1()
{
        uint8_t *some_awesome_data = (uint8_t*)malloc(100); 

... do some stuff

        if (error)
        {
                ScheduleFree();
                free(some_awesome_data);
                return;
        }
... do some stuff

        free(some_awesome_data);
}

void err_ev()
{
... stop all modules and free data
        event_base_free(base);
}


Unfortunately, event_new will put ev to end of the queue. Is there any method 
to put event exactly after ev1? Or may be, is there another solution that 
avoids such memory leaks? (stl::auto_ptr or boost::scoped_ptr also will not 
solve this problem)

Thank you, for attention!


***********************************************************************
To unsubscribe, send an e-mail to majord...@freehaven.net with
unsubscribe libevent-users    in the body.

Reply via email to